summaryrefslogtreecommitdiff
path: root/eval.c
diff options
context:
space:
mode:
Diffstat (limited to 'eval.c')
-rw-r--r--eval.c15
1 files changed, 14 insertions, 1 deletions
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