In a recursive call to reg(), instead of passing our flags pointer, pass
a new one and upon return or in that result with the existing one. I
can see why this should be done, as you don't want to lose what you
already have, as reg() will start by resetting it to 0. I don't know
why one ands it with the known flags, but I'm presuming there is a
reason, and so am copying the paradigm. I searched the commit messages
and didn't find anything. No tests failed, and I didn't figure out a
test that would fail.
SV * substitute_parse = newSVpvn_flags("?:", 2, SVf_UTF8|SVs_TEMP);
STRLEN len;
char *orig_end = RExC_end;
+ I32 flags;
while (RExC_parse < endbrace) {
/* The values are Unicode, and therefore not subject to recoding */
RExC_override_recoding = 1;
- *node_p = reg(pRExC_state, 1, flagp, depth+1);
+ *node_p = reg(pRExC_state, 1, &flags, depth+1);
+ *flagp |= flags&(HASWIDTH|SPSTART|SIMPLE|POSTPONED);
RExC_parse = endbrace;
RExC_end = orig_end;