From a538837fb155c1b25083e16d8f6dd6a76b35f3ed Mon Sep 17 00:00:00 2001 From: "Yukihiro \"Matz\" Matsumoto" Date: Thu, 5 Oct 2023 22:17:26 +0900 Subject: [PATCH] pool.c (mrb_pool_realloc): do nothing if realloc() tries to shrink --- src/pool.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/pool.c b/src/pool.c index 87f18aea3..a8efa0f92 100644 --- a/src/pool.c +++ b/src/pool.c @@ -149,10 +149,12 @@ MRB_API void* mrb_pool_realloc(mrb_pool *pool, void *p, size_t oldlen, size_t newlen) { if (!pool) return NULL; + if (newlen < oldlen) return p; oldlen += ALIGN_PADDING(oldlen); newlen += ALIGN_PADDING(newlen); for (struct mrb_pool_page *page = pool->pages; page; page = page->next) { if (page->last == p) { + /* if p is a last allocation from the page */ size_t beg = (char*)p - page->page; if (beg + oldlen != page->offset) break; if (beg + newlen > page->len) {