X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=regcomp.c;h=b930e8a0a3518973785bd9d0d11d85d44d830bdf;hb=0a6b11f8fedc4bae957f03efab3ecb64338ce939;hp=70682ae3cb9e62568c4fe7ab00f06dd0292c9615;hpb=620e46c53f8c7c9f3fd77bcea9cd19e919047cba;p=p5sagit%2Fp5-mst-13.2.git diff --git a/regcomp.c b/regcomp.c index 70682ae..b930e8a 100644 --- a/regcomp.c +++ b/regcomp.c @@ -776,7 +776,7 @@ reginitcolors(void) PL_colors[i] = ++s; } else - PL_colors[i] = ""; + PL_colors[i] = s = ""; } } else { while (i < 6) @@ -1878,6 +1878,8 @@ tryagain: 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; @@ -2008,6 +2010,11 @@ tryagain: 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; @@ -2097,6 +2104,7 @@ regwhite(char *p, char *e) STATIC char* regpposixcc(I32 value) { + dTHR; char *posixcc = 0; if (value == '[' && PL_regcomp_parse + 1 < PL_regxend && @@ -3211,4 +3219,15 @@ save_re_context(void) 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 }