|
|
|
@ -736,7 +736,6 @@ TR_malloc(size_t size) |
|
|
|
{ |
|
|
|
struct memSegment * seg = NULL; |
|
|
|
long psize = sysconf(_SC_PAGESIZE); |
|
|
|
size_t check; |
|
|
|
|
|
|
|
size += sizeof(struct memSegment); |
|
|
|
|
|
|
|
@ -746,12 +745,17 @@ TR_malloc(size_t size) |
|
|
|
size = ((size / psize) + 1) * psize; |
|
|
|
} |
|
|
|
} else { |
|
|
|
check = size >> 1; |
|
|
|
check = (size | check) - check; |
|
|
|
if (size < 8) { |
|
|
|
size = 8; |
|
|
|
} else { |
|
|
|
size_t check = size; |
|
|
|
size_t mask = 1; |
|
|
|
|
|
|
|
while (check >>= 1) { |
|
|
|
mask = (mask << 1) | 1; |
|
|
|
} |
|
|
|
|
|
|
|
if (check != size) { |
|
|
|
// size is not a power of 2 so bring it to one. |
|
|
|
size = ((size << 1) | size) - size; |
|
|
|
size = (size << 1) & ~mask; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|