OSDN Git Service

(free):
authorMiles Bader <miles@lsi.nec.co.jp>
Wed, 4 Sep 2002 02:11:08 +0000 (02:11 -0000)
committerMiles Bader <miles@lsi.nec.co.jp>
Wed, 4 Sep 2002 02:11:08 +0000 (02:11 -0000)
  Update debug statement.
  Update to use __heap_delete and __heap_is_empty.

libc/stdlib/malloc/free.c

index ac842fc..c8c6879 100644 (file)
@@ -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