239 |
|
#ifdef MSTATS |
240 |
|
b_nsbrked += nrem; |
241 |
|
#endif |
242 |
< |
thisamnt = BYTES_WORD - ((unsigned)bpos&(BYTES_WORD-1)); |
243 |
< |
if (thisamnt < BYTES_WORD) { /* align pointer */ |
244 |
< |
bpos += thisamnt; |
245 |
< |
nrem -= thisamnt; |
246 |
< |
} |
242 |
> |
bpos += nrem & (BYTES_WORD-1); /* align pointer */ |
243 |
> |
nrem &= ~(BYTES_WORD-1); |
244 |
|
} |
245 |
|
|
246 |
|
n = (n+(BYTES_WORD-1))&~(BYTES_WORD-1); /* word align rqst. */ |
362 |
|
if (n <= on && (n > on>>1 || on == 1<<FIRSTBUCKET)) |
363 |
|
return(op); /* same bucket */ |
364 |
|
if ((p = malloc(n)) == NULL) |
365 |
< |
return(NULL); |
365 |
> |
return(n<=on ? op : NULL); |
366 |
|
if (on) { |
367 |
|
#ifdef BSD |
368 |
|
bcopy(op, p, n>on ? on : n); |