diff options
author | naruse <naruse@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2014-04-23 20:59:03 +0000 |
---|---|---|
committer | naruse <naruse@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2014-04-23 20:59:03 +0000 |
commit | 2dca886a0702e51ff06926bd94c36e6983cc450d (patch) | |
tree | a30df35421c36b860017bd6d445ece7e0c125174 | |
parent | 708e1bd49db643c66deef21d05d92e5ac9e31007 (diff) | |
download | ruby-2dca886a0702e51ff06926bd94c36e6983cc450d.tar.gz |
* parse.y (dsym_node_gen): like r45492, call rb_gc_resurrect().
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45693 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-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 |