Change 27717 by [EMAIL PROTECTED] on 2006/04/05 03:17:50

        (??{...}) didn't always restore PL_reg_re.
        Also trie debugging output was using a var that was no longer
        valid

Affected files ...

... //depot/perl/regexec.c#396 edit

Differences ...

==== //depot/perl/regexec.c#396 (text) ====
Index: perl/regexec.c
--- perl/regexec.c#395~27716~   2006-04-04 18:50:33.000000000 -0700
+++ perl/regexec.c      2006-04-04 20:17:50.000000000 -0700
@@ -2805,6 +2805,8 @@
                                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 @@
                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;
                }
            }
End of Patch.

Reply via email to