From 81b41e84e98004fefe9e466304c6a93b5f20d156 Mon Sep 17 00:00:00 2001 From: Masaki Muranaka Date: Fri, 3 Aug 2012 14:03:53 +0900 Subject: Fix a memory leak in mrb_realloc(). --- src/gc.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/gc.c b/src/gc.c index 9c82f858c..9a630f626 100644 --- a/src/gc.c +++ b/src/gc.c @@ -151,13 +151,15 @@ gettimeofday_time(void) void* mrb_realloc(mrb_state *mrb, void *p, size_t len) { - p = (mrb->allocf)(mrb, p, len); + void *p2; - if (!p && len > 0 && mrb->heaps) { + p2 = (mrb->allocf)(mrb, p, len); + + if (!p2 && len > 0 && mrb->heaps) { mrb_garbage_collect(mrb); - p = (mrb->allocf)(mrb, p, len); + p2 = (mrb->allocf)(mrb, p, len); } - return p; + return p2; } void* -- cgit v1.2.3