Eliminate superfluous RV2p[AH]Vs in oops[AH]V()
[p5sagit/p5-mst-13.2.git] / regcomp.c
index d1f29d9..9ab0d30 100644 (file)
--- 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. */