with GRABSIZE; This way, malloc(
1000000) followed by free() followed by
another malloc(
1000000) will result in the same block being allocated,
because first_present will now find it
assert(n1 < (1 << LOG_MAX_SIZE));
min_class = 0;
- while (n1 >= MIN_SIZE) {
+ do {
n1 >>= 1;
min_class++;
- }
+ } while (n1 >= MIN_SIZE);
}
if (min_class >= MAX_FLIST)
register char *p;
#define GRABSIZE 4096 /* Power of 2 */
register unsigned int req =
- (n+mallink_size()+GRABSIZE-1)&~(GRABSIZE-1);
+ ((MIN_SIZE<<min_class)+ mallink_size() + GRABSIZE - 1) &
+ ~(GRABSIZE-1);
if (!ml_last) {
/* first align SBRK() */