summaryrefslogtreecommitdiff
path: root/regexec.c
diff options
context:
space:
mode:
authorDave Mitchell <davem@fdisolutions.com>2006-04-05 03:17:50 +0000
committerDave Mitchell <davem@fdisolutions.com>2006-04-05 03:17:50 +0000
commit878305029f3dfbd9e56219891ad218e5edbb3c02 (patch)
tree398a54cc4b733244e563db64b0312b8eb6973e58 /regexec.c
parent4f639d21b5c9a079a204ea1a0168f3c1a4ed5214 (diff)
downloadperl-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.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/regexec.c b/regexec.c
index 2f6313dace..663af09462 100644
--- a/regexec.c
+++ b/regexec.c
@@ -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;
}
}