diff options
-rw-r--r-- | perly.c | 2 | ||||
-rw-r--r-- | t/base/lex.t | 8 |
2 files changed, 8 insertions, 2 deletions
@@ -213,7 +213,7 @@ S_clear_yystack(pTHX_ const yy_parser *parser) if (yy_type_tab[yystos[ps->state]] == toketype_opval && ps->val.opval) { - if (ps->compcv != PL_compcv) { + if (ps->compcv && (ps->compcv != PL_compcv)) { PL_compcv = ps->compcv; PAD_SET_CUR_NOSAVE(CvPADLIST(PL_compcv), 1); PL_comppad_name = PadlistNAMES(CvPADLIST(PL_compcv)); diff --git a/t/base/lex.t b/t/base/lex.t index 47c6be84b7..981b2e58d2 100644 --- a/t/base/lex.t +++ b/t/base/lex.t @@ -1,6 +1,6 @@ #!./perl -print "1..103\n"; +print "1..104\n"; $x = 'x'; @@ -517,3 +517,9 @@ eval q|s##[}#e|; eval '0; qq{@{sub{]]}}}}}'; print "ok $test - 124385\n"; $test++; } + +{ + # Used to crash [perl #125350] + eval ('qq{@{[0}*sub{]]}}}=sub{0' . "\c["); + print "ok $test - 125350\n"; $test++; +} |