diff --git a/tlsf.c b/tlsf.c index a3bc37f8a5..56984ac855 100644 --- a/tlsf.c +++ b/tlsf.c @@ -492,10 +492,15 @@ static void* align_ptr(const void* ptr, size_t align) static size_t adjust_request_size(size_t size, size_t align) { size_t adjust = 0; - if (size && size < block_size_max) + if (size) { const size_t aligned = align_up(size, align); - adjust = tlsf_max(aligned, block_size_min); + + /* aligned sized must not exceed block_size_max or we'll go out of bounds on sl_bitmap */ + if (aligned < block_size_max) + { + adjust = tlsf_max(aligned, block_size_min); + } } return adjust; }