improved; delayed frees did not work anyway
authorceriel <none@none>
Tue, 5 Jul 1988 11:50:11 +0000 (11:50 +0000)
committerceriel <none@none>
Tue, 5 Jul 1988 11:50:11 +0000 (11:50 +0000)
modules/src/malloc/mal.c

index 67b5356..7439ef7 100644 (file)
 #define        ILL_BREAK               (char *)(-1)    /* funny failure value */
 #endif
 extern char *SBRK();
-privatedata char *freed;
 #ifdef STORE
 #define        MAX_STORE       32
-private do_free(), Xfree(), sell_out();
+private do_free(), sell_out();
 privatedata mallink *store[MAX_STORE];
 #endif STORE
 
@@ -40,7 +39,6 @@ malloc(n)
        register mallink *ml;
        register int min_class;
 
-       if (freed) Xfree();
        if (n < MIN_SIZE) n = align(MIN_SIZE); else n = align(n);
 #ifdef STORE
        if (n <= MAX_STORE*MIN_SIZE)    {
@@ -141,18 +139,11 @@ malloc(n)
 
 free(addr)
        char *addr;
-{
-       if (freed) Xfree();
-       freed = addr;
-}
-
-private
-Xfree()
 {check_mallinks("free entry");{
-       register mallink *ml = mallink_of_block(freed);
+       register mallink *ml = mallink_of_block(addr);
+
 #ifdef STORE
 
-       freed = 0;
        if (free_of(ml) || in_store(ml))
                return;                         /* user frees free block */
        if (size_of(ml) <= MAX_STORE*MIN_SIZE)  {
@@ -229,8 +220,6 @@ realloc(addr, n)
        register unsigned int size;
 
        if (n < MIN_SIZE) n = align(MIN_SIZE); else n = align(n);
-       if (freed && freed != addr) Xfree();
-       else freed = 0;
        if (free_of(ml)) {
                unlink_free_chunk(ml);
                set_free(ml, 0);                /* user reallocs free block */