summaryrefslogtreecommitdiff
path: root/parse.y
diff options
context:
space:
mode:
Diffstat (limited to 'parse.y')
-rw-r--r--parse.y8
1 files changed, 6 insertions, 2 deletions
diff --git a/parse.y b/parse.y
index 0ac1ef2708..290eb75f0f 100644
--- a/parse.y
+++ b/parse.y
@@ -10908,9 +10908,13 @@ rb_make_internal_id(void)
}
static int
-symbols_i(VALUE sym, ID value, VALUE ary)
+symbols_i(VALUE key, ID value, VALUE ary)
{
- rb_ary_push(ary, ID2SYM(value));
+ VALUE sym = ID2SYM(value);
+ if (ID_DYNAMIC_SYM_P(value)) {
+ rb_gc_resurrect(sym);
+ }
+ rb_ary_push(ary, sym);
return ST_CONTINUE;
}