X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=regcomp.c;h=9ab0d309a55204e74f5e6826b1436433f2f6b05b;hb=51e247a3115dfbe56609ebd8c14d882747724db8;hp=d1f29d99942cdf91c77108a83a5993fd212177e2;hpb=a0ed51b321531af4b47cce24205ab9656f043f0f;p=p5sagit%2Fp5-mst-13.2.git diff --git a/regcomp.c b/regcomp.c index d1f29d9..9ab0d30 100644 --- a/regcomp.c +++ b/regcomp.c @@ -206,6 +206,7 @@ static scan_data_t zero_scan_data = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; STATIC void scan_commit(scan_data_t *data) { + dTHR; STRLEN l = CHR_SVLEN(data->last_found); STRLEN old_l = CHR_SVLEN(*data->longest); @@ -318,7 +319,10 @@ study_chunk(regnode **scanp, I32 *deltap, regnode *last, scan_data_t *data, U32 } if (OP(scan) != CURLYX) { - int max = (reg_off_by_arg[OP(scan)] ? I32_MAX : U16_MAX); + int max = (reg_off_by_arg[OP(scan)] + ? I32_MAX + /* I32 may be smaller than U16 on CRAYs! */ + : (I32_MAX < U16_MAX ? I32_MAX : U16_MAX)); int off = (reg_off_by_arg[OP(scan)] ? ARG(scan) : NEXT_OFF(scan)); int noff; regnode *n = scan; @@ -2245,6 +2249,7 @@ regclassutf8(void) I32 n; SV *listsv; U8 flags = 0; + dTHR; if (*PL_regcomp_parse == '^') { /* Complement of range. */ PL_regnaughty++; @@ -2543,6 +2548,7 @@ reganode(U8 op, U32 arg) STATIC void reguni(UV uv, char* s, I32* lenp) { + dTHR; if (SIZE_ONLY) { char tmpbuf[10]; *lenp = uv_to_utf8(tmpbuf, uv) - tmpbuf; @@ -3104,7 +3110,8 @@ re_croak2(const char* pat1,const char* pat2,...) void save_re_context(void) -{ +{ + dTHR; SAVEPPTR(PL_bostr); SAVEPPTR(PL_regprecomp); /* uncompiled string. */ SAVEI32(PL_regnpar); /* () count. */