diff options
author | Dave Mitchell <davem@fdisolutions.com> | 2006-04-05 03:17:50 +0000 |
---|---|---|
committer | Dave Mitchell <davem@fdisolutions.com> | 2006-04-05 03:17:50 +0000 |
commit | 878305029f3dfbd9e56219891ad218e5edbb3c02 (patch) | |
tree | 398a54cc4b733244e563db64b0312b8eb6973e58 /regexec.c | |
parent | 4f639d21b5c9a079a204ea1a0168f3c1a4ed5214 (diff) | |
download | perl-878305029f3dfbd9e56219891ad218e5edbb3c02.tar.gz |
(??{...}) didn't always restore PL_reg_re.
Also trie debugging output was using a var that was no longer
valid
p4raw-id: //depot/perl@27717
Diffstat (limited to 'regexec.c')
-rw-r--r-- | regexec.c | 4 |
1 files changed, 3 insertions, 1 deletions
@@ -2805,6 +2805,8 @@ S_regmatch(pTHX_ regexp *rex, regnode *prog) best = cur; } DEBUG_EXECUTE_r({ + reg_trie_data * const trie = (reg_trie_data*) + PL_reg_re->data->data[ARG(scan)]; SV ** const tmp = av_fetch( trie->words, st->u.trie.accept_buff[ best ].wordnum - 1, 0 ); PerlIO_printf( Perl_debug_log, "%*s %strying alternation #%d <%s> at 0x%p%s\n", REPORT_CODE_OFF+PL_regindent*2, "", PL_colors[4], @@ -3279,10 +3281,10 @@ S_regmatch(pTHX_ regexp *rex, regnode *prog) PL_op = oop; PAD_RESTORE_LOCAL(old_comppad); PL_curcop = ocurcop; + PL_reg_re = oreg; if (!st->logical) { /* /(?{...})/ */ sv_setsv(save_scalar(PL_replgv), ret); - PL_reg_re = oreg; break; } } |