Few more IDE/editor nits from p5p.
[p5sagit/p5-mst-13.2.git] / regcomp.c
index c39405e..c85eb5e 100644 (file)
--- a/regcomp.c
+++ b/regcomp.c
@@ -845,11 +845,15 @@ S_study_chunk(pTHX_ RExC_state_t *pRExC_state, regnode **scanp, I32 *deltap, reg
                if (compat)
                    ANYOF_BITMAP_SET(data->start_class, uc);
                data->start_class->flags &= ~ANYOF_EOS;
+               if (uc < 0x100)
+                 data->start_class->flags &= ~ANYOF_UNICODE_ALL;
            }
            else if (flags & SCF_DO_STCLASS_OR) {
                /* false positive possible if the class is case-folded */
                if (uc < 0x100)
-                   ANYOF_BITMAP_SET(data->start_class, uc);    
+                   ANYOF_BITMAP_SET(data->start_class, uc);
+               else
+                   data->start_class->flags |= ANYOF_UNICODE_ALL;
                data->start_class->flags &= ~ANYOF_EOS;
                cl_and(data->start_class, &and_with);
            }
@@ -2925,7 +2929,7 @@ tryagain:
                    break;
                default:
                  normal_default:
-                   if ((*p & 0xc0) == 0xc0 && UTF) {
+                   if (UTF8_IS_START(*p) && UTF) {
                        ender = utf8_to_uv((U8*)p, RExC_end - p,
                                               &numlen, 0);
                        p += numlen;
@@ -2945,6 +2949,8 @@ tryagain:
                if (ISMULT2(p)) { /* Back off on ?+*. */
                    if (len)
                        p = oldp;
+                   /* ender is a Unicode value so it can be > 0xff --
+                    * in other words, do not use UTF8_IS_CONTINUED(). */
                    else if (ender >= 0x80 && UTF) {
                        reguni(pRExC_state, ender, s, &numlen);
                        s += numlen;
@@ -2956,6 +2962,8 @@ tryagain:
                    }
                    break;
                }
+               /* ender is a Unicode value so it can be > 0xff --
+                * in other words, do not use UTF8_IS_CONTINUED(). */
                if (ender >= 0x80 && UTF) {
                    reguni(pRExC_state, ender, s, &numlen);
                    s += numlen;