*flagp = TRYAGAIN;
return NULL;
case 'p':
- Perl_warner(aTHX_ WARN_REGEXP, "(?p{}) is deprecated - use (??{})");
+ if (SIZE_ONLY)
+ Perl_warner(aTHX_ WARN_REGEXP,
+ "(?p{}) is deprecated - use (??{})");
/* FALL THROUGH*/
case '?':
logical = 1;
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);