diff options
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | bootstraptest/test_eval.rb | 11 | ||||
-rw-r--r-- | vm.c | 2 |
3 files changed, 16 insertions, 2 deletions
@@ -1,3 +1,8 @@ +Wed Aug 26 12:36:58 2009 Nobuyoshi Nakada <nobu@ruby-lang.org> + + * vm.c (collect_local_variables_in_env): skips internal variables. + [ruby-core:25125] + Tue Aug 25 23:51:07 2009 NARUSE, Yui <naruse@ruby-lang.org> * tool/enc-unicode.rb: added for generate name2ctype.kwd. diff --git a/bootstraptest/test_eval.rb b/bootstraptest/test_eval.rb index 6dc23468cb..452ce43107 100644 --- a/bootstraptest/test_eval.rb +++ b/bootstraptest/test_eval.rb @@ -297,5 +297,14 @@ assert_equal "(eval):1:in `block in <main>': ", %q{ rescue => e e.message end -}, ' [ruby-dev:35392]' +}, '[ruby-dev:35392]' +assert_equal "[:x]", %q{ + def kaboom! + yield.eval("local_variables") + end + + for x in enum_for(:kaboom!) + binding + end +}, '[ruby-core:25125]' @@ -382,7 +382,7 @@ collect_local_variables_in_env(rb_env_t * const env, const VALUE ary) int i; for (i = 0; i < env->block.iseq->local_table_size; i++) { ID lid = env->block.iseq->local_table[i]; - if (lid) { + if (rb_is_local_id(lid)) { rb_ary_push(ary, ID2SYM(lid)); } } |