diff options
| -rw-r--r-- | ChangeLog | 4 | ||||
| -rw-r--r-- | parse.y | 3 | ||||
| -rw-r--r-- | test/ruby/test_symbol.rb | 6 |
3 files changed, 13 insertions, 0 deletions
@@ -1,3 +1,7 @@ +Thu Apr 24 05:50:13 2014 NARUSE, Yui <naruse@ruby-lang.org> + + * parse.y (dsym_node_gen): like r45492, call rb_gc_resurrect(). + Wed Apr 23 20:36:22 2014 Tanaka Akira <akr@fsij.org> * ext/etc/extconf.rb: Build ext/etc unconditionally. @@ -9571,6 +9571,9 @@ dsym_node_gen(struct parser_params *parser, NODE *node) case NODE_STR: lit = node->nd_lit; node->nd_lit = ID2SYM(rb_intern_str(lit)); + if (!STATIC_SYM_P(node->nd_lit)) { + rb_gc_resurrect(node->nd_lit); + } nd_set_type(node, NODE_LIT); break; default: diff --git a/test/ruby/test_symbol.rb b/test/ruby/test_symbol.rb index 70358ea1bc..f24bb81583 100644 --- a/test/ruby/test_symbol.rb +++ b/test/ruby/test_symbol.rb @@ -221,4 +221,10 @@ class TestSymbol < Test::Unit::TestCase assert_equal sym, Symbol.find(str) end; end + + def test_symol_gc_1 + assert_normal_exit('".".intern;GC.start(immediate_sweep:false);eval %[GC.start;:"."]', + '', + child_env: '--disable-gems') + end end |
