A bug introduced in #8217 (the undefined variable in the
[p5sagit/p5-mst-13.2.git] / pp_ctl.c
index 07545dc..487a8d2 100644 (file)
--- a/pp_ctl.c
+++ b/pp_ctl.c
@@ -116,10 +116,15 @@ PP(pp_regcomp)
            pm->op_pmflags = pm->op_pmpermflags;        /* reset case sensitivity */
            if (DO_UTF8(tmpstr))
                pm->op_pmdynflags |= PMdf_DYN_UTF8;
-           else
+           else {
                pm->op_pmdynflags &= ~PMdf_DYN_UTF8;
+               if (pm->op_pmdynflags & PMdf_UTF8)
+                   t = (char*)bytes_to_utf8((U8*)t, &len);
+           }
            pm->op_pmregexp = CALLREGCOMP(aTHX_ t, t + len, pm);
-           PL_reginterp_cnt = 0;               /* XXXX Be extra paranoid - needed
+           if (!DO_UTF8(tmpstr) && (pm->op_pmdynflags & PMdf_UTF8))
+               Safefree(t);
+           PL_reginterp_cnt = 0;       /* XXXX Be extra paranoid - needed
                                           inside tie/overload accessors.  */
        }
     }