summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2008-05-22 12:27:13 +0000
committermatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2008-05-22 12:27:13 +0000
commit398689b176e87191d54a12a869dc7c4ac08ce696 (patch)
tree3e50895359a36abaf54e1816923bf5065a126a54
parent0ba197f08fa974727e083796d52495a307dbd880 (diff)
* parse.y (top_local_setup): fixed memory leak bug based on a
patch from Roger Pack <rogerpack2005 at gmail.com> in [ruby-core:16610]. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@16534 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--ChangeLog6
-rw-r--r--parse.y3
2 files changed, 8 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index 8c8b0f4e7b..a2e8164cfd 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+Thu May 22 21:24:15 2008 Yukihiro Matsumoto <[email protected]>
+
+ * parse.y (top_local_setup): fixed memory leak bug based on a
+ patch from Roger Pack <rogerpack2005 at gmail.com> in
+ [ruby-core:16610].
+
Thu May 22 14:20:54 2008 Nobuyoshi Nakada <[email protected]>
* array.c (flatten): check if reentered. [ruby-dev:34798]
diff --git a/parse.y b/parse.y
index f843f6584a..1834778e92 100644
--- a/parse.y
+++ b/parse.y
@@ -5805,7 +5805,7 @@ top_local_setup()
rb_mem_clear(vars+i, len-i);
}
else {
- *vars++ = (VALUE)ruby_scope;
+ *vars++ = 0;
rb_mem_clear(vars, len);
}
ruby_scope->local_vars = vars;
@@ -5821,6 +5821,7 @@ top_local_setup()
if (!(ruby_scope->flags & SCOPE_CLONE))
xfree(ruby_scope->local_tbl);
}
+ ruby_scope->local_vars[-1] = 0; /* no reference needed */
ruby_scope->local_tbl = local_tbl();
}
}