diff --git a/src/memory.c b/src/memory.c index 55550cc..fc169bc 100644 --- a/src/memory.c +++ b/src/memory.c @@ -748,14 +748,16 @@ TR_malloc(size_t size) if (size < 8) { size = 8; } else { - size_t check = size; - size_t mask = 1; + size_t check = size >> 4; + size_t mask = 0x1F; while (check >>= 1) { mask = (mask << 1) | 1; } - size = (size << 1) & ~mask; + if (size != (size & ~(mask >> 1))) { + size = (size << 1) & ~mask; + } } }