#define UTF_PATTERN ((PL_reg_flags & RF_utf8) != 0)
-#define RS_init 1 /* eval environment created */
-#define RS_set 2 /* replsv value is set */
-
#ifndef STATIC
#define STATIC static
#endif
}
PL_reg_flags = 0;
- PL_reg_eval_set = 0;
+ PL_reg_state.re_state_eval_setup_done = FALSE;
PL_reg_maxiter = 0;
if (RX_UTF8(rx))
Safefree(swap);
RX_MATCH_TAINTED_set(rx, PL_reg_flags & RF_tainted);
- if (PL_reg_eval_set)
+ if (PL_reg_state.re_state_eval_setup_done)
restore_pos(aTHX_ prog);
if (RXp_PAREN_NAMES(prog))
(void)hv_iterinit(RXp_PAREN_NAMES(prog));
phooey:
DEBUG_EXECUTE_r(PerlIO_printf(Perl_debug_log, "%sMatch failed%s\n",
PL_colors[4], PL_colors[5]));
- if (PL_reg_eval_set)
+ if (PL_reg_state.re_state_eval_setup_done)
restore_pos(aTHX_ prog);
if (swap) {
/* we failed :-( roll it back */
reginfo->cutpoint=NULL;
- if ((prog->extflags & RXf_EVAL_SEEN) && !PL_reg_eval_set) {
+ if ((prog->extflags & RXf_EVAL_SEEN)
+ && !PL_reg_state.re_state_eval_setup_done)
+ {
MAGIC *mg;
- PL_reg_eval_set = RS_init;
+ PL_reg_state.re_state_eval_setup_done = TRUE;
DEBUG_EXECUTE_r(DEBUG_s(
PerlIO_printf(Perl_debug_log, " setting stack tmpbase at %"IVdf"\n",
(IV)(PL_stack_sp - PL_stack_base));
#define SETREX(Re1,Re2) \
- if (PL_reg_eval_set) PM_SETRE((PL_reg_curpm), (Re2)); \
+ if (PL_reg_state.re_state_eval_setup_done) \
+ PM_SETRE((PL_reg_curpm), (Re2)); \
Re1 = (Re2)
STATIC I32 /* 0 failure, 1 success */
DEBUG_EXECUTE_r(PerlIO_printf(Perl_debug_log, "%sMatch successful!%s\n",
PL_colors[4], PL_colors[5]));
- if (PL_reg_eval_set) {
+ if (PL_reg_state.re_state_eval_setup_done) {
/* each successfully executed (?{...}) block does the equivalent of
* local $^R = do {...}
* When popping the save stack, all these locals would be undone;
{
dVAR;
regexp * const rex = (regexp *)arg;
- if (PL_reg_eval_set) {
+ if (PL_reg_state.re_state_eval_setup_done) {
if (PL_reg_oldsaved) {
rex->subbeg = PL_reg_oldsaved;
rex->sublen = PL_reg_oldsavedlen;
RXp_MATCH_COPIED_on(rex);
}
PL_reg_magic->mg_len = PL_reg_oldpos;
- PL_reg_eval_set = 0;
+ PL_reg_state.re_state_eval_setup_done = FALSE;
PL_curpm = PL_reg_oldcurpm;
}
}
#define PL_reglastcloseparen PL_reg_state.re_state_reglastcloseparen
#define PL_reg_start_tmp PL_reg_state.re_state_reg_start_tmp
#define PL_reg_start_tmpl PL_reg_state.re_state_reg_start_tmpl
-#define PL_reg_eval_set PL_reg_state.re_state_reg_eval_set
#define PL_reg_match_utf8 PL_reg_state.re_state_reg_match_utf8
#define PL_reg_magic PL_reg_state.re_state_reg_magic
#define PL_reg_oldpos PL_reg_state.re_state_reg_oldpos
struct re_save_state {
U32 re_state_reg_flags; /* from regexec.c */
U32 re_state_reg_start_tmpl; /* from regexec.c */
- I32 re_state_reg_eval_set; /* from regexec.c */
+ bool re_state_eval_setup_done; /* from regexec.c */
bool re_state_reg_match_utf8; /* from regexec.c */
bool re_reparsing; /* runtime (?{}) fed back into parser */
char *re_state_bostr;