Preserve $!.
[p5sagit/p5-mst-13.2.git] / regcomp.c
index 05e77ba..7af090e 100644 (file)
--- a/regcomp.c
+++ b/regcomp.c
@@ -1732,7 +1732,7 @@ S_reg(pTHX_ I32 paren, I32 *flagp)
                *flagp = TRYAGAIN;
                return NULL;
            case 'p':
-               if (PL_regcode == &PL_regdummy)
+               if (SIZE_ONLY)
                    Perl_warner(aTHX_ WARN_REGEXP,
                                "(?p{}) is deprecated - use (??{})");
                /* FALL THROUGH*/
@@ -2296,8 +2296,14 @@ tryagain:
        nextchar();
        ret = reg(1, &flags);
        if (ret == NULL) {
-               if (flags & TRYAGAIN)
+               if (flags & TRYAGAIN) {
+                   if (PL_regcomp_parse == PL_regxend) {
+                        /* Make parent create an empty node if needed. */
+                       *flagp |= TRYAGAIN;
+                       return(NULL);
+                   }
                    goto tryagain;
+               }
                return(NULL);
        }
        *flagp |= flags&(HASWIDTH|SPSTART|SIMPLE);