From c267d34070370603078b900c5628eb62d2103475 Mon Sep 17 00:00:00 2001 From: matz Date: Mon, 2 Aug 2004 08:52:53 +0000 Subject: * eval.c (blk_free): fixed serious memory leak. [ruby-dev:24013] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@6733 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- eval.c | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) (limited to 'eval.c') diff --git a/eval.c b/eval.c index bfeeac706c..366af113e7 100644 --- a/eval.c +++ b/eval.c @@ -668,7 +668,6 @@ static unsigned long frame_unique = 0; _frame.node = ruby_current_node; \ _frame.iter = ruby_iter->iter; \ _frame.argc = 0; \ - _frame.flags = FRAME_ALLOCA; \ _frame.uniq = frame_unique++; \ ruby_frame = &_frame @@ -7750,6 +7749,20 @@ static void blk_free(data) struct BLOCK *data; { + struct FRAME *frame; + void *tmp; + + frame = data->frame.prev; + while (frame) { + tmp = frame; + frame = frame->prev; + free(tmp); + } + while (data) { + tmp = data; + data = data->prev; + free(tmp); + } } static void -- cgit v1.2.3