PL_colors[i] = ++s;
}
else
- PL_colors[i] = "";
+ PL_colors[i] = s = "";
}
} else {
while (i < 6)
FAIL("trailing \\ in regexp");
/* FALL THROUGH */
default:
+ /* Do not generate `unrecognized' warnings here, we fall
+ back into the quick-grab loop below */
goto defchar;
}
break;
FAIL("trailing \\ in regexp");
/* FALL THROUGH */
default:
+ if (!SIZE_ONLY && ckWARN(WARN_UNSAFE) && isALPHA(*p))
+ warner(WARN_UNSAFE,
+ "/%.127s/: Unrecognized escape \\%c passed through",
+ PL_regprecomp,
+ *p);
goto normal_default;
}
break;
STATIC char*
regpposixcc(I32 value)
{
+ dTHR;
char *posixcc = 0;
if (value == '[' && PL_regcomp_parse + 1 < PL_regxend &&
SAVESPTR(PL_regcode); /* Code-emit pointer; ®dummy = don't */
SAVEPPTR(PL_regxend); /* End of input for compile */
SAVEPPTR(PL_regcomp_parse); /* Input-scan pointer. */
+ SAVESPTR(PL_reg_call_cc); /* from regexec.c */
+ SAVESPTR(PL_reg_re); /* from regexec.c */
+ SAVEPPTR(PL_reg_ganch); /* from regexec.c */
+ SAVESPTR(PL_reg_sv); /* from regexec.c */
+ SAVESPTR(PL_reg_magic); /* from regexec.c */
+ SAVEI32(PL_reg_oldpos); /* from regexec.c */
+ SAVESPTR(PL_reg_oldcurpm); /* from regexec.c */
+ SAVESPTR(PL_reg_curpm); /* from regexec.c */
+#ifdef DEBUGGING
+ SAVEPPTR(PL_reg_starttry); /* from regexec.c */
+#endif
}