#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
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) {
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) {
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 */