diff --git a/ChangeLog b/ChangeLog index 3c7789f78b..a0b4959c93 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +Tue Jun 18 16:43:44 2013 Nobuyoshi Nakada + + * parse.y (parser_heredoc_restore): clear lex_strterm always to get + rid of marking recycled node. this bug is revealed by r41372 with + GC.stress=true. + Tue Jun 18 12:53:25 2013 Tanaka Akira * bignum.c (nlz): Cast the result explicitly. diff --git a/parse.y b/parse.y index d6a8a0374c..c69556f70e 100644 --- a/parse.y +++ b/parse.y @@ -6345,6 +6345,7 @@ parser_heredoc_restore(struct parser_params *parser, NODE *here) { VALUE line; + lex_strterm = 0; line = here->nd_orig; lex_lastline = line; lex_pbeg = RSTRING_PTR(line); @@ -6419,7 +6420,6 @@ parser_here_document(struct parser_params *parser, NODE *here) #endif restore: heredoc_restore(lex_strterm); - lex_strterm = 0; return 0; } if (was_bol() && whole_match_p(eos, len, indent)) {