diff options
| author | Masaki Muranaka <[email protected]> | 2012-08-03 14:03:53 +0900 |
|---|---|---|
| committer | Masaki Muranaka <[email protected]> | 2012-08-03 14:03:53 +0900 |
| commit | 81b41e84e98004fefe9e466304c6a93b5f20d156 (patch) | |
| tree | fd2930708d76de418264cc564d0ac0c682e6e84c | |
| parent | 6fb88f7e1dfb9c6e62fd994ef8158360e1823f01 (diff) | |
| download | mruby-81b41e84e98004fefe9e466304c6a93b5f20d156.tar.gz mruby-81b41e84e98004fefe9e466304c6a93b5f20d156.zip | |
Fix a memory leak in mrb_realloc().
| -rw-r--r-- | src/gc.c | 10 |
1 files changed, 6 insertions, 4 deletions
@@ -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* |
