Code cleanup based on turning off the -woffs in IRIX.
[p5sagit/p5-mst-13.2.git] / pp_ctl.c
index 3bb8392..4970bd0 100644 (file)
--- a/pp_ctl.c
+++ b/pp_ctl.c
@@ -86,8 +86,15 @@ PP(pp_regcomp)
     SV *tmpstr;
     STRLEN len;
     MAGIC *mg = Null(MAGIC*);
-
+    
     tmpstr = POPs;
+
+    /* prevent recompiling under /o and ithreads. */
+#if defined(USE_ITHREADS) || defined(USE_THREADS)
+    if (pm->op_pmflags & PMf_KEEP && PM_GETRE(pm))
+        RETURN;
+#endif
+
     if (SvROK(tmpstr)) {
        SV *sv = SvRV(tmpstr);
        if(SvMAGICAL(sv))
@@ -140,8 +147,11 @@ PP(pp_regcomp)
 
     if (!PM_GETRE(pm)->prelen && PL_curpm)
        pm = PL_curpm;
-    else if (strEQ("\\s+", PM_GETRE(pm)->precomp))
-       pm->op_pmflags |= PMf_WHITE;
+    else
+       if (strEQ("\\s+", PM_GETRE(pm)->precomp))
+           pm->op_pmflags |= PMf_WHITE;
+       else
+           pm->op_pmflags &= ~PMf_WHITE;
 
     /* XXX runtime compiled output needs to move to the pad */
     if (pm->op_pmflags & PMf_KEEP) {