Browse Source

fix optimization for GNU memory management

1.0.2
Georg Hopp 12 years ago
parent
commit
5e1c8f73ae
  1. 16
      src/memory.c

16
src/memory.c

@ -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;
}
}

Loading…
Cancel
Save