{
I32 l = 0;
CHECKPOINT lastcp;
+ I32 lparen = *PL_reglastparen;
/* We suppose that the next guy does not need
backtracking: in particular, it is of constant length,
}
if (regmatch(next))
sayYES;
+ /* t/op/regexp.t test 885 fails if this is performed */
+ /* *PL_reglastparen = lparen; */
REGCP_UNWIND(lastcp);
}
/* Couldn't or didn't -- move forward. */
}
if (regmatch(next))
sayYES;
+ *PL_reglastparen = lparen;
REGCP_UNWIND(lastcp);
}
/* Couldn't or didn't -- back up. */
PL_reginput = locinput;
if (minmod) {
CHECKPOINT lastcp;
+ I32 lparen = *PL_reglastparen;
minmod = 0;
if (ln && regrepeat(scan, ln) < ln)
sayNO;
if (c == (UV)c1 || c == (UV)c2)
{
TRYPAREN(paren, ln, PL_reginput);
+ *PL_reglastparen = lparen;
REGCP_UNWIND(lastcp);
}
}
else if (c1 == -1000)
{
TRYPAREN(paren, ln, PL_reginput);
+ *PL_reglastparen = lparen;
REGCP_UNWIND(lastcp);
}
/* Couldn't or didn't -- move forward. */
}
else {
CHECKPOINT lastcp;
+ I32 lparen = *PL_reglastparen;
n = regrepeat(scan, n);
locinput = PL_reginput;
if (ln < n && PL_regkind[(U8)OP(next)] == EOL &&
if (c1 == -1000 || c == (UV)c1 || c == (UV)c2)
{
TRYPAREN(paren, n, PL_reginput);
+ *PL_reglastparen = lparen;
REGCP_UNWIND(lastcp);
}
/* Couldn't or didn't -- back up. */
if (c1 == -1000 || c == (UV)c1 || c == (UV)c2)
{
TRYPAREN(paren, n, PL_reginput);
+ *PL_reglastparen = lparen;
REGCP_UNWIND(lastcp);
}
/* Couldn't or didn't -- back up. */
(??{}) x y - -
a(b)?? abc y <$1> <> # undef [perl #16773]
(\d{1,3}\.){3,} 128.134.142.8 y <$1> <142.> # [perl #18019]
+^.{3,4}(.+)\1\z foobarbar y $1 bar # 16 tests for [perl #23171]
+^(?:f|o|b){3,4}(.+)\1\z foobarbar y $1 bar
+^.{3,4}((?:b|a|r)+)\1\z foobarbar y $1 bar
+^(?:f|o|b){3,4}((?:b|a|r)+)\1\z foobarbar y $1 bar
+^.{3,4}(.+?)\1\z foobarbar y $1 bar
+^(?:f|o|b){3,4}(.+?)\1\z foobarbar y $1 bar
+^.{3,4}((?:b|a|r)+?)\1\z foobarbar y $1 bar
+^(?:f|o|b){3,4}((?:b|a|r)+?)\1\z foobarbar y $1 bar
+^.{2,3}?(.+)\1\z foobarbar y $1 bar
+^(?:f|o|b){2,3}?(.+)\1\z foobarbar y $1 bar
+^.{2,3}?((?:b|a|r)+)\1\z foobarbar y $1 bar
+^(?:f|o|b){2,3}?((?:b|a|r)+)\1\z foobarbar y $1 bar
+^.{2,3}?(.+?)\1\z foobarbar y $1 bar
+^(?:f|o|b){2,3}?(.+?)\1\z foobarbar y $1 bar
+^.{2,3}?((?:b|a|r)+?)\1\z foobarbar y $1 bar
+^(?:f|o|b){2,3}?((?:b|a|r)+?)\1\z foobarbar y $1 bar