--- ray/src/common/malloc.c 1990/10/03 21:01:59 1.9 +++ ray/src/common/malloc.c 1990/11/13 14:39:05 1.10 @@ -23,7 +23,6 @@ static char SCCSid[] = "$SunId$ LBL"; #ifdef MSTATS #include - static unsigned b_nalloced = 0; static unsigned b_nfreed = 0; static unsigned b_nscrounged = 0; @@ -56,7 +55,9 @@ typedef union m_head { static M_HEAD *free_list[NBUCKETS]; +static char DUMMYLOC[BYTES_WORD]; + char * mscrounge(np) /* search free lists to satisfy request */ register unsigned *np; @@ -171,6 +172,9 @@ unsigned n; register M_HEAD *mp; register int bucket; register unsigned bsiz; + /* don't return NULL on 0 request */ + if (n == 0) + return(DUMMYLOC); /* find first bucket that fits */ for (bucket = FIRSTBUCKET, bsiz = 1<bucket; else on = 0; @@ -229,7 +233,7 @@ char *p; register M_HEAD *mp; register int bucket; - if (p == NULL) + if (p == NULL || p == DUMMYLOC) return; mp = (M_HEAD *)p - 1; bucket = mp->bucket;