ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/radiance/ray/src/common/malloc.c
(Generate patch)

Comparing ray/src/common/malloc.c (file contents):
Revision 1.12 by greg, Tue Apr 2 09:36:21 1991 UTC vs.
Revision 1.13 by greg, Wed Jul 17 11:35:47 1991 UTC

# Line 101 | Line 101 | register unsigned  n;
101          unsigned  thisamnt;
102          register char   *p;
103  
104 #ifdef MSTATS
105        b_nalloced += n;
106 #endif
104          if (pagesz == 0) {                              /* initialize */
105                  pagesz = amnt = getpagesize();
106                  nrem = (int)sbrk(0);                    /* page align break */
# Line 139 | Line 136 | register unsigned  n;
136          p = bpos;
137          bpos += n;                                      /* advance */
138          nrem -= n;
139 + #ifdef MSTATS
140 +        b_nalloced += n;
141 + #endif
142          return(p);
143   }
144  
# Line 191 | Line 191 | unsigned       n;
191                  errno = EINVAL;
192                  return(NULL);
193          }
194 #ifdef MSTATS
195        m_nalloced += bsiz + sizeof(M_HEAD);
196        m_nwasted += bsiz + sizeof(M_HEAD) - n;
197 #endif
194          if (free_list[bucket] == NULL) {        /* need more core */
195                  mp = (M_HEAD *)bmalloc(bsiz+sizeof(M_HEAD));
196                  if (mp == NULL)
# Line 203 | Line 199 | unsigned       n;
199                  mp = free_list[bucket];
200                  free_list[bucket] = mp->next;
201          }
202 + #ifdef MSTATS
203 +        m_nalloced += bsiz + sizeof(M_HEAD);
204 +        m_nwasted += bsiz + sizeof(M_HEAD) - n;
205 + #endif
206          mp->a.magic = MAGIC;                    /* tag block */
207          mp->a.bucket = bucket;
208          return((char *)(mp+1));
# Line 223 | Line 223 | unsigned       n;
223                  on = 0;
224          if (n <= on && (n > on>>1 || on == 1<<FIRSTBUCKET))
225                  return(op);             /* same bucket */
226 <        p = malloc(n);
227 <        if (p != NULL)
226 >        if ((p = malloc(n)) == NULL)
227 >                return(NULL);
228 >        if (on) {
229   #ifdef  BSD
230                  bcopy(op, p, n>on ? on : n);
231   #else
232                  (void)memcpy(p, op, n>on ? on : n);
233   #endif
234 <        free(op);
234 >                free(op);
235 >        }
236          return(p);
237   }
238  
# Line 242 | Line 244 | char   *p;
244          register int    bucket;
245  
246          if (p == NULL || p == DUMMYLOC)
247 <                return;
247 >                return(1);
248          mp = (M_HEAD *)p - 1;
249          if (mp->a.magic != MAGIC)               /* sanity check */
250 <                return;
250 >                return(0);
251          bucket = mp->a.bucket;
252          mp->next = free_list[bucket];
253          free_list[bucket] = mp;
254   #ifdef MSTATS
255          m_nfreed += (1 << bucket) + sizeof(M_HEAD);
256   #endif
257 +        return(1);
258   }
259  
260  

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines