| 3697 | } |
| 3698 | |
| 3699 | SPP_API size_t destroy_mspace(mspace msp) |
| 3700 | { |
| 3701 | size_t freed = 0; |
| 3702 | mstate ms = (mstate)msp; |
| 3703 | if (ms->ok_magic()) |
| 3704 | { |
| 3705 | msegmentptr sp = &ms->_seg; |
| 3706 | while (sp != 0) |
| 3707 | { |
| 3708 | char* base = sp->_base; |
| 3709 | size_t size = sp->_size; |
| 3710 | flag_t flag = sp->_sflags; |
| 3711 | (void)base; // placate people compiling -Wunused-variable |
| 3712 | sp = sp->_next; |
| 3713 | if ((flag & USE_MMAP_BIT) && !(flag & EXTERN_BIT) && |
| 3714 | SPP_CALL_MUNMAP(base, size) == 0) |
| 3715 | freed += size; |
| 3716 | } |
| 3717 | } |
| 3718 | else |
| 3719 | SPP_USAGE_ERROR_ACTION(ms, ms); |
| 3720 | return freed; |
| 3721 | } |
| 3722 | |
| 3723 | /* ---------------------------- mspace versions of malloc/calloc/free routines -------------------- */ |
| 3724 | SPP_API void* mspace_malloc(mspace msp, size_t bytes) |