diff --git a/src/slab.c b/src/slab.c index 927f09f3fa8c36a8961aea6723ec5a85c5eb22b2..914d8236dd15413e5262e4d989cbda081aa4b637 100644 --- a/src/slab.c +++ b/src/slab.c @@ -12,6 +12,7 @@ * 2008-07-12 Bernard the first version * 2010-07-13 Bernard fix RT_ALIGN issue found by kuronca * 2010-10-23 yi.qiu add module memory allocator + * 2010-12-18 yi.qiu fix zone release bug */ /* @@ -507,7 +508,6 @@ void *rt_malloc(rt_size_t size) slab_zone *z; rt_int32_t zi; slab_chunk *chunk; - rt_base_t interrupt_level; struct memusage *kup; /* zero size, return RT_NULL */ @@ -818,7 +818,7 @@ void rt_free(void *ptr) /* get memory usage */ #ifdef RT_SLAB_DEBUG { - rt_uint32 addr = ((rt_uint32_t)ptr & ~RT_MM_PAGE_MASK); + rt_uint32_t addr = ((rt_uint32_t)ptr & ~RT_MM_PAGE_MASK); rt_kprintf("free a memory 0x%x and align to 0x%x, kup index %d\n", (rt_uint32_t)ptr, (rt_uint32_t)addr, @@ -926,7 +926,7 @@ void rt_free(void *ptr) rt_sem_release(&heap_sem); /* release pages */ - rt_page_free(z, zone_size); + rt_page_free(z, zone_size / RT_MM_PAGE_SIZE); return; } }