This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Re: Bug in Regular Expressions when using colon as delimiter
[perl5.git] / regcomp.c
index 9b0d4fc..3e30253 100644 (file)
--- a/regcomp.c
+++ b/regcomp.c
@@ -467,9 +467,12 @@ I32 *flagp;
                nextchar();
                *flagp = TRYAGAIN;
                return NULL;
+            case 0:
+                croak("Sequence (? incomplete");
+                break;
            default:
                --regparse;
-               while (*regparse && strchr("iogmsx", *regparse))
+               while (*regparse && strchr("iogcmsx", *regparse))
                    pmflag(&regflags, *regparse++);
                if (*regparse != ')')
                    croak("Sequence (?%c...) not recognized", *regparse);
@@ -903,7 +906,9 @@ tryagain:
                    goto defchar;
                else {
                    regsawback = 1;
-                   ret = reganode(REF, num);
+                   ret = reganode((regflags & PMf_FOLD)
+                                  ? ((regflags & PMf_LOCALE) ? REFFL : REFF)
+                                  : REF, num);
                    *flagp |= HASWIDTH;
                    while (isDIGIT(*regparse))
                        regparse++;
@@ -1667,6 +1672,12 @@ char *op;
     case REF:
        sv_catpvf(sv, "REF%d", ARG1(op));
        break;
+    case REFF:
+       sv_catpvf(sv, "REFF%d", ARG1(op));
+       break;
+    case REFFL:
+       sv_catpvf(sv, "REFFL%d", ARG1(op));
+       break;
     case OPEN:
        sv_catpvf(sv, "OPEN%d", ARG1(op));
        break;