diff options
| -rw-r--r-- | libc/stdlib/malloc/free.c | 10 | 
1 files changed, 5 insertions, 5 deletions
| diff --git a/libc/stdlib/malloc/free.c b/libc/stdlib/malloc/free.c index ac842fc67..c8c687964 100644 --- a/libc/stdlib/malloc/free.c +++ b/libc/stdlib/malloc/free.c @@ -32,12 +32,12 @@ free (void *mem)    /* Normal free.  */ +  MALLOC_DEBUG ("free: 0x%lx (base = 0x%lx, total_size = %d)\n", +		(long)mem, (long)MALLOC_BASE (mem), MALLOC_SIZE (mem)); +    size = MALLOC_SIZE (mem);    mem = MALLOC_BASE (mem); -  MALLOC_DEBUG ("free: 0x%lx (base = 0x%lx, total_size = %d)\n", -		(long)MALLOC_ADDR (mem), (long)mem, size); -    __malloc_lock ();    /* Put MEM back in the heap, and get the free-area it was placed in.  */ @@ -84,9 +84,9 @@ free (void *mem)  		    start, end, end - start);        /* Remove FA from the heap.  */ -      __heap_unlink_free_area (heap, fa); +      __heap_delete (heap, fa); -      if (!fa->next && !fa->prev) +      if (__heap_is_empty (heap))  	/* We want to avoid the heap from losing all memory, so reserve  	   a bit.  This test is only a heuristic -- the existance of  	   another free area, even if it's smaller than | 
