Revision: 97
http://www.exim.org/viewvc/pcre2?view=rev&revision=97
Author: ph10
Date: 2014-10-06 18:28:42 +0100 (Mon, 06 Oct 2014)
Log Message:
-----------
Work on the tests for JIT.
Modified Paths:
--------------
code/trunk/RunTest
code/trunk/src/pcre2_match.c
code/trunk/testdata/testinput14
code/trunk/testdata/testinput15
code/trunk/testdata/testinput16
code/trunk/testdata/testinput17
code/trunk/testdata/testinput2
code/trunk/testdata/testoutput14
code/trunk/testdata/testoutput15
code/trunk/testdata/testoutput16
code/trunk/testdata/testoutput17
code/trunk/testdata/testoutput2
Added Paths:
-----------
code/trunk/testdata/testinput18
code/trunk/testdata/testoutput18
Modified: code/trunk/RunTest
===================================================================
--- code/trunk/RunTest 2014-10-05 17:55:25 UTC (rev 96)
+++ code/trunk/RunTest 2014-10-06 17:28:42 UTC (rev 97)
@@ -64,16 +64,14 @@
title11="Test 11: Specials for the basic 16-bit and 32-bit libraries"
title12="Test 12: Specials for the 16-bit and 32-bit libraries UTF and UCP support"
title13="Test 13: DFA specials for the basic 16-bit and 32-bit libraries"
-title14="Test 14: JIT-specific features (when JIT is not available)"
-title15="Test 15: JIT-specific features (when JIT is available)"
-title16="Test 16: Tests of the POSIX interface, excluding UTF/UCP"
-title17="Test 17: Tests of the POSIX interface with UTF/UCP"
+title14="Test 14: Non-JIT limits tests"
+title15="Test 15: JIT-specific features when JIT is not available"
+title16="Test 16: JIT-specific features when JIT is available"
+title17="Test 17: Tests of the POSIX interface, excluding UTF/UCP"
+title18="Test 18: Tests of the POSIX interface with UTF/UCP"
-#title21="Test 21: Reloads for the basic 16/32-bit library"
-#title22="Test 22: Reloads for the 16/32-bit library with UTF-16/32 support"
+maxtest=18
-maxtest=17
-
if [ $# -eq 1 -a "$1" = "list" ]; then
echo $title1
echo $title2 "(not UTF or UCP)"
@@ -92,11 +90,7 @@
echo $title15
echo $title16
echo $title17
-# echo $title18
-# echo $title19
-# echo $title20
-# echo $title21
-# echo $title22
+ echo $title18
exit 0
fi
@@ -181,11 +175,7 @@
do15=no
do16=no
do17=no
-#do18=no
-#do19=no
-#do20=no
-#do21=no
-#do22=no
+do18=no
while [ $# -gt 0 ] ; do
case $1 in
@@ -206,11 +196,7 @@
15) do15=yes;;
16) do16=yes;;
17) do17=yes;;
-# 18) do18=yes;;
-# 19) do19=yes;;
-# 20) do20=yes;;
-# 21) do21=yes;;
-# 22) do22=yes;;
+ 18) do18=yes;;
-8) arg8=yes;;
-16) arg16=yes;;
-32) arg32=yes;;
@@ -335,11 +321,8 @@
$do5 = no -a $do6 = no -a $do7 = no -a $do8 = no -a \
$do9 = no -a $do10 = no -a $do11 = no -a $do12 = no -a \
$do13 = no -a $do14 = no -a $do15 = no -a $do16 = no -a \
- $do17 = no \
+ $do17 = no -a $do18 = no \
]; then
-# -a $do18 = no -a $do19 = no -a $do20 = no -a \
-# $do21 = no -a $do22 = no
-
do1=yes
do2=yes
do3=yes
@@ -357,11 +340,7 @@
do15=yes
do16=yes
do17=yes
-# do18=yes
-# do19=yes
-# do20=yes
-# do21=yes
-# do22=yes
+ do18=yes
fi
# Handle any explicit skips at this stage, so that an argument list may consist
@@ -696,16 +675,29 @@
fi
fi
-# Test JIT-specific features when JIT is not available
+# Test non-JIT match and recursion limits
if [ $do14 = yes ] ; then
echo $title14
+ $sim $valgrind ./pcre2test -q $bmode $testdata/testinput14 testtry
+ if [ $? = 0 ] ; then
+ $cf $testdata/testoutput14 testtry
+ if [ $? != 0 ] ; then exit 1; fi
+ else exit 1
+ fi
+ echo " OK"
+fi
+
+# Test JIT-specific features when JIT is not available
+
+if [ $do15 = yes ] ; then
+ echo $title15
if [ $jit -ne 0 ] ; then
echo " Skipped because JIT is available"
else
- $sim $valgrind ./pcre2test -q $bmode $testdata/testinput14 testtry
+ $sim $valgrind ./pcre2test -q $bmode $testdata/testinput15 testtry
if [ $? = 0 ] ; then
- $cf $testdata/testoutput14 testtry
+ $cf $testdata/testoutput15 testtry
if [ $? != 0 ] ; then exit 1; fi
else exit 1
fi
@@ -715,14 +707,14 @@
# Test JIT-specific features when JIT is available
-if [ $do15 = yes ] ; then
- echo $title15
+if [ $do16 = yes ] ; then
+ echo $title16
if [ $jit -eq 0 -o "$nojit" = "yes" ] ; then
echo " Skipped because JIT is not available or not usable"
else
- $sim $valgrind ./pcre2test -q $bmode $testdata/testinput15 testtry
+ $sim $valgrind ./pcre2test -q $bmode $testdata/testinput16 testtry
if [ $? = 0 ] ; then
- $cf $testdata/testoutput15 testtry
+ $cf $testdata/testoutput16 testtry
if [ $? != 0 ] ; then exit 1; fi
else exit 1
fi
@@ -732,14 +724,14 @@
# Tests for the POSIX interface without UTF/UCP (8-bit only)
-if [ $do16 = yes ] ; then
- echo $title16
+if [ $do17 = yes ] ; then
+ echo $title17
if [ "$bits" = "16" -o "$bits" = "32" ] ; then
echo " Skipped when running 16/32-bit tests"
else
- $sim $valgrind ./pcre2test -q $bmode $testdata/testinput16 testtry
+ $sim $valgrind ./pcre2test -q $bmode $testdata/testinput17 testtry
if [ $? = 0 ] ; then
- $cf $testdata/testoutput16 testtry
+ $cf $testdata/testoutput17 testtry
if [ $? != 0 ] ; then exit 1; fi
else exit 1
fi
@@ -749,16 +741,16 @@
# Tests for the POSIX interface with UTF/UCP (8-bit only)
-if [ $do17 = yes ] ; then
- echo $title17
+if [ $do18 = yes ] ; then
+ echo $title18
if [ "$bits" = "16" -o "$bits" = "32" ] ; then
echo " Skipped when running 16/32-bit tests"
elif [ $utf -eq 0 ] ; then
echo " Skipped because UTF-$bits support is not available"
else
- $sim $valgrind ./pcre2test -q $bmode $testdata/testinput17 testtry
+ $sim $valgrind ./pcre2test -q $bmode $testdata/testinput18 testtry
if [ $? = 0 ] ; then
- $cf $testdata/testoutput17 testtry
+ $cf $testdata/testoutput18 testtry
if [ $? != 0 ] ; then exit 1; fi
else exit 1
fi
@@ -766,55 +758,6 @@
fi
fi
-## Tests for reloads with 16/32-bit library
-#
-#if [ $do21 = yes ] ; then
-# echo $title21
-# if [ "$bits" = "8" ] ; then
-# echo " Skipped when running 8-bit tests"
-# elif [ $link_size -ne 2 ] ; then
-# echo " Skipped because link size is not 2"
-# else
-# cp -f $testdata/saved8 testsaved8
-# cp -f $testdata/saved16LE-1 testsaved16LE-1
-# cp -f $testdata/saved16BE-1 testsaved16BE-1
-# cp -f $testdata/saved32LE-1 testsaved32LE-1
-# cp -f $testdata/saved32BE-1 testsaved32BE-1
-# $sim $valgrind ./pcre2test -q $bmode $testdata/testinput21 testtry
-# if [ $? = 0 ] ; then
-# $cf $testdata/testoutput21-$bits testtry
-# if [ $? != 0 ] ; then exit 1; fi
-# else exit 1
-# fi
-# echo " OK"
-# fi
-#fi
-#
-## Tests for reloads with 16/32-bit library (UTF-16 support)
-#
-#if [ $do22 = yes ] ; then
-# echo $title22
-# if [ "$bits" = "8" ] ; then
-# echo " Skipped when running 8-bit tests"
-# elif [ $utf -eq 0 ] ; then
-# echo " Skipped because UTF-$bits support is not available"
-# elif [ $link_size -ne 2 ] ; then
-# echo " Skipped because link size is not 2"
-# else
-# cp -f $testdata/saved16LE-2 testsaved16LE-2
-# cp -f $testdata/saved16BE-2 testsaved16BE-2
-# cp -f $testdata/saved32LE-2 testsaved32LE-2
-# cp -f $testdata/saved32BE-2 testsaved32BE-2
-# $sim $valgrind ./pcre2test -q $bmode $testdata/testinput22 testtry
-# if [ $? = 0 ] ; then
-# $cf $testdata/testoutput22-$bits testtry
-# if [ $? != 0 ] ; then exit 1; fi
-# else exit 1
-# fi
-# echo " OK"
-# fi
-#fi
-
# End of loop for 8/16/32-bit tests
done
Modified: code/trunk/src/pcre2_match.c
===================================================================
--- code/trunk/src/pcre2_match.c 2014-10-05 17:55:25 UTC (rev 96)
+++ code/trunk/src/pcre2_match.c 2014-10-06 17:28:42 UTC (rev 97)
@@ -6606,7 +6606,6 @@
mb->offset_end = ocount;
mb->offset_max = (2*ocount)/3;
-mb->capture_last = 0;
/* Reset the working variable associated with each extraction. These should
never be used unless previously set, but they get saved and restored, and so we
@@ -6673,6 +6672,7 @@
for(;;)
{
PCRE2_SPTR new_start_match;
+ mb->capture_last = 0;
/* ----------------- Start of match optimizations ---------------- */
Modified: code/trunk/testdata/testinput14
===================================================================
--- code/trunk/testdata/testinput14 2014-10-05 17:55:25 UTC (rev 96)
+++ code/trunk/testdata/testinput14 2014-10-06 17:28:42 UTC (rev 97)
@@ -1,9 +1,84 @@
-# This test is run only when JIT support is not available. It checks that an
-# attempt to use it has the expected behaviour. It also tests things that
-# are different without JIT.
+# These are tests of the match-limiting features. The results are different for
+# interpretive or JIT matching, so this test should not be run with JIT. The
+# same tests are run using JIT in test 16.
-/abc/I,jit,jitverify
+/(a+)*zz/I
+ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazzbbbbbb\=find_limits
+ aaaaaaaaaaaaaz\=find_limits
-/a*/I
+!((?:\s|//.*\\n|/[*](?:\\n|.)*?[*]/)*)!I
+ /* this is a C style comment */\=find_limits
+/^(?>a)++/
+ aa\=find_limits
+ aaaaaaaaa\=find_limits
+
+/(a)(?1)++/
+ aa\=find_limits
+ aaaaaaaaa\=find_limits
+
+/a(?:.)*?a/ims
+ abbbbbbbbbbbbbbbbbbbbba\=find_limits
+
+/a(?:.(*THEN))*?a/ims
+ abbbbbbbbbbbbbbbbbbbbba\=find_limits
+
+/a(?:.(*THEN:ABC))*?a/ims
+ abbbbbbbbbbbbbbbbbbbbba\=find_limits
+
+/^(?>a+)(?>b+)(?>c+)(?>d+)(?>e+)/
+ aabbccddee\=find_limits
+
+/^(?>(a+))(?>(b+))(?>(c+))(?>(d+))(?>(e+))/
+ aabbccddee\=find_limits
+
+/^(?>(a+))(?>b+)(?>(c+))(?>d+)(?>(e+))/
+ aabbccddee\=find_limits
+
+/(*LIMIT_MATCH=12bc)abc/
+
+/(*LIMIT_MATCH=4294967290)abc/
+
+/(*LIMIT_RECURSION=4294967280)abc/I
+
+/(a+)*zz/
+ aaaaaaaaaaaaaz
+ aaaaaaaaaaaaaz\=match_limit=3000
+
+/(a+)*zz/
+ aaaaaaaaaaaaaz\=recursion_limit=10
+
+/(*LIMIT_MATCH=3000)(a+)*zz/I
+ aaaaaaaaaaaaaz
+ aaaaaaaaaaaaaz\=match_limit=60000
+
+/(*LIMIT_MATCH=60000)(*LIMIT_MATCH=3000)(a+)*zz/I
+ aaaaaaaaaaaaaz
+
+/(*LIMIT_MATCH=60000)(a+)*zz/I
+ aaaaaaaaaaaaaz
+ aaaaaaaaaaaaaz\=match_limit=3000
+
+/(*LIMIT_RECURSION=10)(a+)*zz/I
+ aaaaaaaaaaaaaz
+ aaaaaaaaaaaaaz\=recursion_limit=1000
+
+/(*LIMIT_RECURSION=10)(*LIMIT_RECURSION=1000)(a+)*zz/I
+ aaaaaaaaaaaaaz
+
+/(*LIMIT_RECURSION=1000)(a+)*zz/I
+ aaaaaaaaaaaaaz
+ aaaaaaaaaaaaaz\=recursion_limit=10
+
+# These three have infinitely nested recursions.
+
+/((?2))((?1))/
+ abc
+
+/((?(R2)a+|(?1)b))/
+ aaaabcde
+
+/(?(R)a*(?1)|((?R))b)/
+ aaaabcde
+
# End of testinput14
Modified: code/trunk/testdata/testinput15
===================================================================
--- code/trunk/testdata/testinput15 2014-10-05 17:55:25 UTC (rev 96)
+++ code/trunk/testdata/testinput15 2014-10-06 17:28:42 UTC (rev 97)
@@ -1,87 +1,9 @@
-# This test is run only when JIT support is available. It checks for a
-# successful and an unsuccessful JIT compile, and a couple of things that are
-# different with JIT.
+# This test is run only when JIT support is not available. It checks that an
+# attempt to use it has the expected behaviour. It also tests things that
+# are different without JIT.
-/abc/I,jit
+/abc/I,jit,jitverify
-/(?(?C1)(?=a)a)/I,jit
-
-/(?(?C1)(?=a)a)/I
-
/a*/I
-/(?(R)a*(?1)|((?R))b)/jit
- aaaabcde
-
-# Test various compile modes
-
-#pattern jit,jitverify
-
-/abcd/
- abcd
- xyz
-
-/abcd/
- abcd
- ab\=ps
- ab\=ph
- xyz
-
-/abcd/
- abcd
- ab\=ps
- ab\=ph
- xyz
-
-/abcd/jit=1
- abcd
- ab\=ps
- ab\=ph
- xyz
- xyz\=ps
-
-/abcd/jit=2
- abcd
- ab\=ps
- ab\=ph
- xyz
-
-/abcd/jit=3
- abcd
- ab\=ps
- ab\=ph
- xyz
-
-/abcd/jit=4
- abcd
- ab\=ps
- ab\=ph
- xyz
-
-/abcd/jit=5
- abcd
- ab\=ps
- ab\=ph
- xyz
-
-/abcd/jit=6
- abcd
- ab\=ps
- ab\=ph
- xyz
-
-/abcd/jit=7
- abcd
- ab\=ps
- ab\=ph
- xyz
-
-/abcd/I,jit=2
-
-/(*NO_START_OPT)a(*:m)b/mark
- a
-
-/^12345678abcd/m
- 12345678abcd
-
-# End of testinput15
+# End of testinput14
Modified: code/trunk/testdata/testinput16
===================================================================
--- code/trunk/testdata/testinput16 2014-10-05 17:55:25 UTC (rev 96)
+++ code/trunk/testdata/testinput16 2014-10-06 17:28:42 UTC (rev 97)
@@ -1,81 +1,87 @@
-# This set of tests is run only with the 8-bit library. It tests the POSIX
-# interface, which is supported only with the 8-bit library. This test should
-# not be run with JIT (which is not available for the POSIX interface).
-
-#forbid_utf
-#pattern posix
+# This test is run only when JIT support is available. It checks for a
+# successful and an unsuccessful JIT compile, and a couple of things that are
+# different with JIT.
-/abc/
- abc
- *** Failers
+/abc/I,jit
-/^abc|def/
- abcdef
- abcdef\=notbol
+/(?(?C1)(?=a)a)/I,jit
-/.*((abc)$|(def))/
- defabc
- defabc\=noteol
+/(?(?C1)(?=a)a)/I
-/the quick brown fox/
- the quick brown fox
- *** Failers
- The Quick Brown Fox
+/a*/I
-/the quick brown fox/i
- the quick brown fox
- The Quick Brown Fox
+/(?(R)a*(?1)|((?R))b)/jit
+ aaaabcde
-/abc.def/
- *** Failers
- abc\ndef
+# Test various compile modes
-/abc$/
- abc
- abc\n
+#pattern jit,jitverify
-/(abc)\2/
+/abcd/
+ abcd
+ xyz
-/(abc\1)/
- abc
+/abcd/
+ abcd
+ ab\=ps
+ ab\=ph
+ xyz
-/a*(b+)(z)(z)/
- aaaabbbbzzzz
- aaaabbbbzzzz\=ovector=0
- aaaabbbbzzzz\=ovector=1
- aaaabbbbzzzz\=ovector=2
+/abcd/
+ abcd
+ ab\=ps
+ ab\=ph
+ xyz
-/ab.cd/
- ab-cd
- ab=cd
- ** Failers
- ab\ncd
+/abcd/jit=1
+ abcd
+ ab\=ps
+ ab\=ph
+ xyz
+ xyz\=ps
-/ab.cd/s
- ab-cd
- ab=cd
- ab\ncd
+/abcd/jit=2
+ abcd
+ ab\=ps
+ ab\=ph
+ xyz
-/a(b)c/no_auto_capture
- abc
+/abcd/jit=3
+ abcd
+ ab\=ps
+ ab\=ph
+ xyz
-/a(?P<name>b)c/no_auto_capture
- abc
+/abcd/jit=4
+ abcd
+ ab\=ps
+ ab\=ph
+ xyz
-/a?|b?/
- abc
- ** Failers
- ddd\=notempty
+/abcd/jit=5
+ abcd
+ ab\=ps
+ ab\=ph
+ xyz
-/\w+A/
- CDAAAAB
+/abcd/jit=6
+ abcd
+ ab\=ps
+ ab\=ph
+ xyz
-/\w+A/ungreedy
- CDAAAAB
-
-/\Biss\B/I,aftertext
- Mississippi
+/abcd/jit=7
+ abcd
+ ab\=ps
+ ab\=ph
+ xyz
-/abc/\
+/abcd/I,jit=2
-# End of testdata/testinput16
+/(*NO_START_OPT)a(*:m)b/mark
+ a
+
+/^12345678abcd/m
+ 12345678abcd
+
+# End of testinput15
Modified: code/trunk/testdata/testinput17
===================================================================
--- code/trunk/testdata/testinput17 2014-10-05 17:55:25 UTC (rev 96)
+++ code/trunk/testdata/testinput17 2014-10-06 17:28:42 UTC (rev 97)
@@ -1,17 +1,81 @@
# This set of tests is run only with the 8-bit library. It tests the POSIX
-# interface with UTF/UCP support, which is supported only with the 8-bit
-# library. This test should not be run with JIT (which is not available for the
-# POSIX interface).
+# interface, which is supported only with the 8-bit library. This test should
+# not be run with JIT (which is not available for the POSIX interface).
+#forbid_utf
#pattern posix
-/a\x{1234}b/utf
- a\x{1234}b
+/abc/
+ abc
+ *** Failers
-/\w/
- +++\x{c2}
+/^abc|def/
+ abcdef
+ abcdef\=notbol
-/\w/ucp
- +++\x{c2}
-
-# End of testdata/testinput17
+/.*((abc)$|(def))/
+ defabc
+ defabc\=noteol
+
+/the quick brown fox/
+ the quick brown fox
+ *** Failers
+ The Quick Brown Fox
+
+/the quick brown fox/i
+ the quick brown fox
+ The Quick Brown Fox
+
+/abc.def/
+ *** Failers
+ abc\ndef
+
+/abc$/
+ abc
+ abc\n
+
+/(abc)\2/
+
+/(abc\1)/
+ abc
+
+/a*(b+)(z)(z)/
+ aaaabbbbzzzz
+ aaaabbbbzzzz\=ovector=0
+ aaaabbbbzzzz\=ovector=1
+ aaaabbbbzzzz\=ovector=2
+
+/ab.cd/
+ ab-cd
+ ab=cd
+ ** Failers
+ ab\ncd
+
+/ab.cd/s
+ ab-cd
+ ab=cd
+ ab\ncd
+
+/a(b)c/no_auto_capture
+ abc
+
+/a(?P<name>b)c/no_auto_capture
+ abc
+
+/a?|b?/
+ abc
+ ** Failers
+ ddd\=notempty
+
+/\w+A/
+ CDAAAAB
+
+/\w+A/ungreedy
+ CDAAAAB
+
+/\Biss\B/I,aftertext
+ Mississippi
+
+/abc/\
+
+# End of testdata/testinput16
Added: code/trunk/testdata/testinput18
===================================================================
--- code/trunk/testdata/testinput18 (rev 0)
+++ code/trunk/testdata/testinput18 2014-10-06 17:28:42 UTC (rev 97)
@@ -0,0 +1,17 @@
+# This set of tests is run only with the 8-bit library. It tests the POSIX
+# interface with UTF/UCP support, which is supported only with the 8-bit
+# library. This test should not be run with JIT (which is not available for the
+# POSIX interface).
+
+#pattern posix
+
+/a\x{1234}b/utf
+ a\x{1234}b
+
+/\w/
+ +++\x{c2}
+
+/\w/ucp
+ +++\x{c2}
+
+# End of testdata/testinput17
Modified: code/trunk/testdata/testinput2
===================================================================
--- code/trunk/testdata/testinput2 2014-10-05 17:55:25 UTC (rev 96)
+++ code/trunk/testdata/testinput2 2014-10-06 17:28:42 UTC (rev 97)
@@ -1220,10 +1220,6 @@
/(a)(?P<named>bc)/IB,no_auto_capture
-/(a+)*zz/I
- aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazzbbbbbb\=find_limits
- aaaaaaaaaaaaaz\=find_limits
-
/(aaa(?C1)bbb|ab)/I
aaabbb
aaabbb\=callout_data=0
@@ -1584,9 +1580,6 @@
abc\rdef
abc\r\ndef
-!((?:\s|//.*\\n|/[*](?:\\n|.)*?[*]/)*)!I
- /* this is a C style comment */\=find_limits
-
/(?P<B>25[0-5]|2[0-4]\d|[01]?\d?\d)(?:\.(?P>B)){3}/I
/()()()()()()()()()()()()()()()()()()()()
@@ -3274,14 +3267,6 @@
/(abc)(?1)/I
-/^(?>a)++/
- aa\=find_limits
- aaaaaaaaa\=find_limits
-
-/(a)(?1)++/
- aa\=find_limits
- aaaaaaaaa\=find_limits
-
/(?:(foo)|(bar)|(baz))X/allcaptures
bazfooX
foobazbarX
@@ -3317,15 +3302,6 @@
/[:a[:abc]b:]/B
-/((?2))((?1))/
- abc
-
-/((?(R2)a+|(?1)b))/
- aaaabcde
-
-/(?(R)a*(?1)|((?R))b)/
- aaaabcde
-
/(a+|(?R)b)/
/^(a(*:A)(d|e(*:B))z|aeq)/auto_callout
@@ -3357,15 +3333,6 @@
/z(*ACCEPT)a/I,aftertext
baxzbx
-/a(?:.)*?a/ims
- abbbbbbbbbbbbbbbbbbbbba\=find_limits
-
-/a(?:.(*THEN))*?a/ims
- abbbbbbbbbbbbbbbbbbbbba\=find_limits
-
-/a(?:.(*THEN:ABC))*?a/ims
- abbbbbbbbbbbbbbbbbbbbba\=find_limits
-
/^(?>a+)(?>(z+))\w/B
aaaazzzzb
** Failers
@@ -3384,15 +3351,6 @@
/(a\1z)/B
-/^(?>a+)(?>b+)(?>c+)(?>d+)(?>e+)/
- aabbccddee\=find_limits
-
-/^(?>(a+))(?>(b+))(?>(c+))(?>(d+))(?>(e+))/
- aabbccddee\=find_limits
-
-/^(?>(a+))(?>b+)(?>(c+))(?>d+)(?>(e+))/
- aabbccddee\=find_limits
-
/^a\x41z/alt_bsux,allow_empty_class,match_unset_backref,dupnames
aAz
*** Failers
@@ -3741,43 +3699,6 @@
/(?=b(*THEN)a|)bn|bnn/
bnn
-# ---------------------
-
-/(*LIMIT_MATCH=12bc)abc/
-
-/(*LIMIT_MATCH=4294967290)abc/
-
-/(*LIMIT_RECURSION=4294967280)abc/I
-
-/(a+)*zz/
- aaaaaaaaaaaaaz
- aaaaaaaaaaaaaz\=match_limit=3000
-
-/(a+)*zz/
- aaaaaaaaaaaaaz\=recursion_limit=10
-
-/(*LIMIT_MATCH=3000)(a+)*zz/I
- aaaaaaaaaaaaaz
- aaaaaaaaaaaaaz\=match_limit=60000
-
-/(*LIMIT_MATCH=60000)(*LIMIT_MATCH=3000)(a+)*zz/I
- aaaaaaaaaaaaaz
-
-/(*LIMIT_MATCH=60000)(a+)*zz/I
- aaaaaaaaaaaaaz
- aaaaaaaaaaaaaz\=match_limit=3000
-
-/(*LIMIT_RECURSION=10)(a+)*zz/I
- aaaaaaaaaaaaaz
- aaaaaaaaaaaaaz\=recursion_limit=1000
-
-/(*LIMIT_RECURSION=10)(*LIMIT_RECURSION=1000)(a+)*zz/I
- aaaaaaaaaaaaaz
-
-/(*LIMIT_RECURSION=1000)(a+)*zz/I
- aaaaaaaaaaaaaz
- aaaaaaaaaaaaaz\=recursion_limit=10
-
# This test causes a segfault with Perl 5.18.0
/^(?=(a)){0}b(?1)/
Modified: code/trunk/testdata/testoutput14
===================================================================
--- code/trunk/testdata/testoutput14 2014-10-05 17:55:25 UTC (rev 96)
+++ code/trunk/testdata/testoutput14 2014-10-06 17:28:42 UTC (rev 97)
@@ -1,17 +1,195 @@
-# This test is run only when JIT support is not available. It checks that an
-# attempt to use it has the expected behaviour. It also tests things that
-# are different without JIT.
+# These are tests of the match-limiting features. The results are different for
+# interpretive or JIT matching, so this test should not be run with JIT. The
+# same tests are run using JIT in test 16.
-/abc/I,jit,jitverify
+/(a+)*zz/I
+Capturing subpattern count = 1
+Starting code units: a z
+Last code unit = 'z'
+Subject length lower bound = 2
+ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazzbbbbbb\=find_limits
+Minimum match limit = 8
+Minimum recursion limit = 6
+ 0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazz
+ 1: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+ aaaaaaaaaaaaaz\=find_limits
+Minimum match limit = 32768
+Minimum recursion limit = 29
+No match
+
+!((?:\s|//.*\\n|/[*](?:\\n|.)*?[*]/)*)!I
+Capturing subpattern count = 1
+May match empty string
+Subject length lower bound = 0
+ /* this is a C style comment */\=find_limits
+Minimum match limit = 120
+Minimum recursion limit = 6
+ 0: /* this is a C style comment */
+ 1: /* this is a C style comment */
+
+/^(?>a)++/
+ aa\=find_limits
+Minimum match limit = 5
+Minimum recursion limit = 2
+ 0: aa
+ aaaaaaaaa\=find_limits
+Minimum match limit = 12
+Minimum recursion limit = 2
+ 0: aaaaaaaaa
+
+/(a)(?1)++/
+ aa\=find_limits
+Minimum match limit = 7
+Minimum recursion limit = 4
+ 0: aa
+ 1: a
+ aaaaaaaaa\=find_limits
+Minimum match limit = 21
+Minimum recursion limit = 4
+ 0: aaaaaaaaa
+ 1: a
+
+/a(?:.)*?a/ims
+ abbbbbbbbbbbbbbbbbbbbba\=find_limits
+Minimum match limit = 65
+Minimum recursion limit = 2
+ 0: abbbbbbbbbbbbbbbbbbbbba
+
+/a(?:.(*THEN))*?a/ims
+ abbbbbbbbbbbbbbbbbbbbba\=find_limits
+Minimum match limit = 86
+Minimum recursion limit = 45
+ 0: abbbbbbbbbbbbbbbbbbbbba
+
+/a(?:.(*THEN:ABC))*?a/ims
+ abbbbbbbbbbbbbbbbbbbbba\=find_limits
+Minimum match limit = 86
+Minimum recursion limit = 45
+ 0: abbbbbbbbbbbbbbbbbbbbba
+
+/^(?>a+)(?>b+)(?>c+)(?>d+)(?>e+)/
+ aabbccddee\=find_limits
+Minimum match limit = 7
+Minimum recursion limit = 2
+ 0: aabbccddee
+
+/^(?>(a+))(?>(b+))(?>(c+))(?>(d+))(?>(e+))/
+ aabbccddee\=find_limits
+Minimum match limit = 17
+Minimum recursion limit = 16
+ 0: aabbccddee
+ 1: aa
+ 2: bb
+ 3: cc
+ 4: dd
+ 5: ee
+
+/^(?>(a+))(?>b+)(?>(c+))(?>d+)(?>(e+))/
+ aabbccddee\=find_limits
+Minimum match limit = 13
+Minimum recursion limit = 10
+ 0: aabbccddee
+ 1: aa
+ 2: cc
+ 3: ee
+
+/(*LIMIT_MATCH=12bc)abc/
+Failed: error 160 at offset 0: (*VERB) not recognized or malformed
+
+/(*LIMIT_MATCH=4294967290)abc/
+Failed: error 160 at offset 0: (*VERB) not recognized or malformed
+
+/(*LIMIT_RECURSION=4294967280)abc/I
Capturing subpattern count = 0
+Recursion limit = 4294967280
First code unit = 'a'
Last code unit = 'c'
Subject length lower bound = 3
-JIT support is not available in this version of PCRE2
-/a*/I
-Capturing subpattern count = 0
-May match empty string
-Subject length lower bound = 0
+/(a+)*zz/
+ aaaaaaaaaaaaaz
+No match
+ aaaaaaaaaaaaaz\=match_limit=3000
+Failed: error -45: match limit exceeded
+/(a+)*zz/
+ aaaaaaaaaaaaaz\=recursion_limit=10
+Failed: error -50: recursion limit exceeded
+
+/(*LIMIT_MATCH=3000)(a+)*zz/I
+Capturing subpattern count = 1
+Match limit = 3000
+Starting code units: a z
+Last code unit = 'z'
+Subject length lower bound = 2
+ aaaaaaaaaaaaaz
+Failed: error -45: match limit exceeded
+ aaaaaaaaaaaaaz\=match_limit=60000
+Failed: error -45: match limit exceeded
+
+/(*LIMIT_MATCH=60000)(*LIMIT_MATCH=3000)(a+)*zz/I
+Capturing subpattern count = 1
+Match limit = 3000
+Starting code units: a z
+Last code unit = 'z'
+Subject length lower bound = 2
+ aaaaaaaaaaaaaz
+Failed: error -45: match limit exceeded
+
+/(*LIMIT_MATCH=60000)(a+)*zz/I
+Capturing subpattern count = 1
+Match limit = 60000
+Starting code units: a z
+Last code unit = 'z'
+Subject length lower bound = 2
+ aaaaaaaaaaaaaz
+No match
+ aaaaaaaaaaaaaz\=match_limit=3000
+Failed: error -45: match limit exceeded
+
+/(*LIMIT_RECURSION=10)(a+)*zz/I
+Capturing subpattern count = 1
+Recursion limit = 10
+Starting code units: a z
+Last code unit = 'z'
+Subject length lower bound = 2
+ aaaaaaaaaaaaaz
+Failed: error -50: recursion limit exceeded
+ aaaaaaaaaaaaaz\=recursion_limit=1000
+Failed: error -50: recursion limit exceeded
+
+/(*LIMIT_RECURSION=10)(*LIMIT_RECURSION=1000)(a+)*zz/I
+Capturing subpattern count = 1
+Recursion limit = 1000
+Starting code units: a z
+Last code unit = 'z'
+Subject length lower bound = 2
+ aaaaaaaaaaaaaz
+No match
+
+/(*LIMIT_RECURSION=1000)(a+)*zz/I
+Capturing subpattern count = 1
+Recursion limit = 1000
+Starting code units: a z
+Last code unit = 'z'
+Subject length lower bound = 2
+ aaaaaaaaaaaaaz
+No match
+ aaaaaaaaaaaaaz\=recursion_limit=10
+Failed: error -50: recursion limit exceeded
+
+# These three have infinitely nested recursions.
+
+/((?2))((?1))/
+ abc
+Failed: error -49: nested recursion at the same subject position
+
+/((?(R2)a+|(?1)b))/
+ aaaabcde
+Failed: error -49: nested recursion at the same subject position
+
+/(?(R)a*(?1)|((?R))b)/
+ aaaabcde
+Failed: error -49: nested recursion at the same subject position
+
# End of testinput14
Modified: code/trunk/testdata/testoutput15
===================================================================
--- code/trunk/testdata/testoutput15 2014-10-05 17:55:25 UTC (rev 96)
+++ code/trunk/testdata/testoutput15 2014-10-06 17:28:42 UTC (rev 97)
@@ -1,164 +1,17 @@
-# This test is run only when JIT support is available. It checks for a
-# successful and an unsuccessful JIT compile, and a couple of things that are
-# different with JIT.
+# This test is run only when JIT support is not available. It checks that an
+# attempt to use it has the expected behaviour. It also tests things that
+# are different without JIT.
-/abc/I,jit
+/abc/I,jit,jitverify
Capturing subpattern count = 0
-No options
First code unit = 'a'
-Need char = 'c'
+Last code unit = 'c'
Subject length lower bound = 3
-No starting char list
-JIT study was successful
+JIT support is not available in this version of PCRE2
-/(?(?C1)(?=a)a)/I,jit
-Capturing subpattern count = 0
-May match empty string
-No options
-No first code unit
-No last code unit
-Study returned NULL
-JIT study was not successful
-
-/(?(?C1)(?=a)a)/I
-Capturing subpattern count = 0
-May match empty string
-No options
-No first code unit
-No last code unit
-Subject length lower bound = -1
-No starting char list
-JIT study was not successful
-
/a*/I
Capturing subpattern count = 0
May match empty string
-No options
-No first code unit
-No last code unit
-Study returned NULL
+Subject length lower bound = 0
-/(?(R)a*(?1)|((?R))b)/S+
- aaaabcde
-Error -27 (JIT stack limit reached)
-
-# Test various compile modes
-
-#pattern jit,jitverify
-
-/abcd/
- abcd
- 0: abcd (JIT)
- xyz
-No match (JIT)
-
-/abcd/
- abcd
- 0: abcd (JIT)
- ab\P
-Partial match: ab (JIT)
- ab\P\P
-Partial match: ab (JIT)
- xyz
-No match (JIT)
-
-/abcd/
- abcd
- 0: abcd (JIT)
- ab\P
-Partial match: ab (JIT)
- ab\P\P
-Partial match: ab (JIT)
- xyz
-No match (JIT)
-
-/abcd/jit=1
- abcd
- 0: abcd (JIT)
- ab\P
-Partial match: ab
- ab\P\P
-Partial match: ab
- xyz
-No match (JIT)
- xyz\P
-No match
-
-/abcd/jit=2
- abcd
- 0: abcd
- ab\P
-Partial match: ab (JIT)
- ab\P\P
-Partial match: ab
- xyz
-No match
-
-/abcd/jit=3
- abcd
- 0: abcd (JIT)
- ab\P
-Partial match: ab (JIT)
- ab\P\P
-Partial match: ab
- xyz
-No match (JIT)
-
-/abcd/jit=4
- abcd
- 0: abcd
- ab\P
-Partial match: ab
- ab\P\P
-Partial match: ab (JIT)
- xyz
-No match
-
-/abcd/jit=5
- abcd
- 0: abcd (JIT)
- ab\P
-Partial match: ab
- ab\P\P
-Partial match: ab (JIT)
- xyz
-No match (JIT)
-
-/abcd/jit=6
- abcd
- 0: abcd
- ab\P
-Partial match: ab (JIT)
- ab\P\P
-Partial match: ab (JIT)
- xyz
-No match
-
-/abcd/jit=7
- abcd
- 0: abcd (JIT)
- ab\P
-Partial match: ab (JIT)
- ab\P\P
-Partial match: ab (JIT)
- xyz
-No match (JIT)
-
-/abcd/I,jit=2
-Capturing subpattern count = 0
-No options
-First code unit = 'a'
-Last code unit = 'd'
-Subject length lower bound = 4
-No starting char list
-JIT study was successful
-
-/(*NO_START_OPT)a(*:m)b/mark
- a
-No match, mark = m (JIT)
-
-/^12345678abcd/m
- 12345678abcd
- 0: 12345678abcd (JIT)
-
-# End of testinput15
+# End of testinput14
Modified: code/trunk/testdata/testoutput16
===================================================================
--- code/trunk/testdata/testoutput16 2014-10-05 17:55:25 UTC (rev 96)
+++ code/trunk/testdata/testoutput16 2014-10-06 17:28:42 UTC (rev 97)
@@ -1,128 +1,164 @@
-# This set of tests is run only with the 8-bit library. It tests the POSIX
-# interface, which is supported only with the 8-bit library. This test should
-# not be run with JIT (which is not available for the POSIX interface).
-
-#forbid_utf
-#pattern posix
+# This test is run only when JIT support is available. It checks for a
+# successful and an unsuccessful JIT compile, and a couple of things that are
+# different with JIT.
-/abc/
- abc
- 0: abc
- *** Failers
-No match: POSIX code 17: match failed
+/abc/I,jit
+Capturing subpattern count = 0
+No options
+First code unit = 'a'
+Need char = 'c'
+Subject length lower bound = 3
+No starting char list
+JIT study was successful
-/^abc|def/
- abcdef
- 0: abc
- abcdef\=notbol
- 0: def
+/(?(?C1)(?=a)a)/I,jit
+Capturing subpattern count = 0
+May match empty string
+No options
+No first code unit
+No last code unit
+Study returned NULL
+JIT study was not successful
-/.*((abc)$|(def))/
- defabc
- 0: defabc
- 1: abc
- 2: abc
- defabc\=noteol
- 0: def
- 1: def
- 3: def
+/(?(?C1)(?=a)a)/I
+Capturing subpattern count = 0
+May match empty string
+No options
+No first code unit
+No last code unit
+Subject length lower bound = -1
+No starting char list
+JIT study was not successful
-/the quick brown fox/
- the quick brown fox
- 0: the quick brown fox
- *** Failers
-No match: POSIX code 17: match failed
- The Quick Brown Fox
-No match: POSIX code 17: match failed
+/a*/I
+Capturing subpattern count = 0
+May match empty string
+No options
+No first code unit
+No last code unit
+Study returned NULL
-/the quick brown fox/i
- the quick brown fox
- 0: the quick brown fox
- The Quick Brown Fox
- 0: The Quick Brown Fox
+/(?(R)a*(?1)|((?R))b)/S+
+ aaaabcde
+Error -27 (JIT stack limit reached)
-/abc.def/
- *** Failers
-No match: POSIX code 17: match failed
- abc\ndef
-No match: POSIX code 17: match failed
+# Test various compile modes
-/abc$/
- abc
- 0: abc
- abc\n
- 0: abc
+#pattern jit,jitverify
-/(abc)\2/
-Failed: POSIX code 15: bad back reference at offset 7
+/abcd/
+ abcd
+ 0: abcd (JIT)
+ xyz
+No match (JIT)
-/(abc\1)/
- abc
-No match: POSIX code 17: match failed
+/abcd/
+ abcd
+ 0: abcd (JIT)
+ ab\P
+Partial match: ab (JIT)
+ ab\P\P
+Partial match: ab (JIT)
+ xyz
+No match (JIT)
-/a*(b+)(z)(z)/
- aaaabbbbzzzz
- 0: aaaabbbbzz
- 1: bbbb
- 2: z
- 3: z
- aaaabbbbzzzz\=ovector=0
-Matched without capture
- aaaabbbbzzzz\=ovector=1
- 0: aaaabbbbzz
- aaaabbbbzzzz\=ovector=2
- 0: aaaabbbbzz
- 1: bbbb
+/abcd/
+ abcd
+ 0: abcd (JIT)
+ ab\P
+Partial match: ab (JIT)
+ ab\P\P
+Partial match: ab (JIT)
+ xyz
+No match (JIT)
-/ab.cd/
- ab-cd
- 0: ab-cd
- ab=cd
- 0: ab=cd
- ** Failers
-No match: POSIX code 17: match failed
- ab\ncd
-No match: POSIX code 17: match failed
+/abcd/jit=1
+ abcd
+ 0: abcd (JIT)
+ ab\P
+Partial match: ab
+ ab\P\P
+Partial match: ab
+ xyz
+No match (JIT)
+ xyz\P
+No match
-/ab.cd/s
- ab-cd
- 0: ab-cd
- ab=cd
- 0: ab=cd
- ab\ncd
- 0: ab\x0acd
+/abcd/jit=2
+ abcd
+ 0: abcd
+ ab\P
+Partial match: ab (JIT)
+ ab\P\P
+Partial match: ab
+ xyz
+No match
-/a(b)c/no_auto_capture
- abc
-Matched with REG_NOSUB
+/abcd/jit=3
+ abcd
+ 0: abcd (JIT)
+ ab\P
+Partial match: ab (JIT)
+ ab\P\P
+Partial match: ab
+ xyz
+No match (JIT)
-/a(?P<name>b)c/no_auto_capture
- abc
-Matched with REG_NOSUB
+/abcd/jit=4
+ abcd
+ 0: abcd
+ ab\P
+Partial match: ab
+ ab\P\P
+Partial match: ab (JIT)
+ xyz
+No match
-/a?|b?/
- abc
- 0: a
- ** Failers
- 0:
- ddd\=notempty
-No match: POSIX code 17: match failed
+/abcd/jit=5
+ abcd
+ 0: abcd (JIT)
+ ab\P
+Partial match: ab
+ ab\P\P
+Partial match: ab (JIT)
+ xyz
+No match (JIT)
-/\w+A/
- CDAAAAB
- 0: CDAAAA
+/abcd/jit=6
+ abcd
+ 0: abcd
+ ab\P
+Partial match: ab (JIT)
+ ab\P\P
+Partial match: ab (JIT)
+ xyz
+No match
-/\w+A/ungreedy
- CDAAAAB
- 0: CDA
-
-/\Biss\B/I,aftertext
-** Ignored with POSIX interface: info
- Mississippi
- 0: iss
- 0+ issippi
+/abcd/jit=7
+ abcd
+ 0: abcd (JIT)
+ ab\P
+Partial match: ab (JIT)
+ ab\P\P
+Partial match: ab (JIT)
+ xyz
+No match (JIT)
-/abc/\
-Failed: POSIX code 9: bad escape sequence at offset 4
+/abcd/I,jit=2
+Capturing subpattern count = 0
+No options
+First code unit = 'a'
+Last code unit = 'd'
+Subject length lower bound = 4
+No starting char list
+JIT study was successful
-# End of testdata/testinput16
+/(*NO_START_OPT)a(*:m)b/mark
+ a
+No match, mark = m (JIT)
+
+/^12345678abcd/m
+ 12345678abcd
+ 0: 12345678abcd (JIT)
+
+# End of testinput15
Modified: code/trunk/testdata/testoutput17
===================================================================
--- code/trunk/testdata/testoutput17 2014-10-05 17:55:25 UTC (rev 96)
+++ code/trunk/testdata/testoutput17 2014-10-06 17:28:42 UTC (rev 97)
@@ -1,20 +1,128 @@
# This set of tests is run only with the 8-bit library. It tests the POSIX
-# interface with UTF/UCP support, which is supported only with the 8-bit
-# library. This test should not be run with JIT (which is not available for the
-# POSIX interface).
+# interface, which is supported only with the 8-bit library. This test should
+# not be run with JIT (which is not available for the POSIX interface).
+#forbid_utf
#pattern posix
-/a\x{1234}b/utf
- a\x{1234}b
- 0: a\x{1234}b
+/abc/
+ abc
+ 0: abc
+ *** Failers
+No match: POSIX code 17: match failed
-/\w/
- +++\x{c2}
+/^abc|def/
+ abcdef
+ 0: abc
+ abcdef\=notbol
+ 0: def
+
+/.*((abc)$|(def))/
+ defabc
+ 0: defabc
+ 1: abc
+ 2: abc
+ defabc\=noteol
+ 0: def
+ 1: def
+ 3: def
+
+/the quick brown fox/
+ the quick brown fox
+ 0: the quick brown fox
+ *** Failers
No match: POSIX code 17: match failed
+ The Quick Brown Fox
+No match: POSIX code 17: match failed
-/\w/ucp
- +++\x{c2}
- 0: \xc2
-
-# End of testdata/testinput17
+/the quick brown fox/i
+ the quick brown fox
+ 0: the quick brown fox
+ The Quick Brown Fox
+ 0: The Quick Brown Fox
+
+/abc.def/
+ *** Failers
+No match: POSIX code 17: match failed
+ abc\ndef
+No match: POSIX code 17: match failed
+
+/abc$/
+ abc
+ 0: abc
+ abc\n
+ 0: abc
+
+/(abc)\2/
+Failed: POSIX code 15: bad back reference at offset 7
+
+/(abc\1)/
+ abc
+No match: POSIX code 17: match failed
+
+/a*(b+)(z)(z)/
+ aaaabbbbzzzz
+ 0: aaaabbbbzz
+ 1: bbbb
+ 2: z
+ 3: z
+ aaaabbbbzzzz\=ovector=0
+Matched without capture
+ aaaabbbbzzzz\=ovector=1
+ 0: aaaabbbbzz
+ aaaabbbbzzzz\=ovector=2
+ 0: aaaabbbbzz
+ 1: bbbb
+
+/ab.cd/
+ ab-cd
+ 0: ab-cd
+ ab=cd
+ 0: ab=cd
+ ** Failers
+No match: POSIX code 17: match failed
+ ab\ncd
+No match: POSIX code 17: match failed
+
+/ab.cd/s
+ ab-cd
+ 0: ab-cd
+ ab=cd
+ 0: ab=cd
+ ab\ncd
+ 0: ab\x0acd
+
+/a(b)c/no_auto_capture
+ abc
+Matched with REG_NOSUB
+
+/a(?P<name>b)c/no_auto_capture
+ abc
+Matched with REG_NOSUB
+
+/a?|b?/
+ abc
+ 0: a
+ ** Failers
+ 0:
+ ddd\=notempty
+No match: POSIX code 17: match failed
+
+/\w+A/
+ CDAAAAB
+ 0: CDAAAA
+
+/\w+A/ungreedy
+ CDAAAAB
+ 0: CDA
+
+/\Biss\B/I,aftertext
+** Ignored with POSIX interface: info
+ Mississippi
+ 0: iss
+ 0+ issippi
+
+/abc/\
+Failed: POSIX code 9: bad escape sequence at offset 4
+
+# End of testdata/testinput16
Added: code/trunk/testdata/testoutput18
===================================================================
--- code/trunk/testdata/testoutput18 (rev 0)
+++ code/trunk/testdata/testoutput18 2014-10-06 17:28:42 UTC (rev 97)
@@ -0,0 +1,20 @@
+# This set of tests is run only with the 8-bit library. It tests the POSIX
+# interface with UTF/UCP support, which is supported only with the 8-bit
+# library. This test should not be run with JIT (which is not available for the
+# POSIX interface).
+
+#pattern posix
+
+/a\x{1234}b/utf
+ a\x{1234}b
+ 0: a\x{1234}b
+
+/\w/
+ +++\x{c2}
+No match: POSIX code 17: match failed
+
+/\w/ucp
+ +++\x{c2}
+ 0: \xc2
+
+# End of testdata/testinput17
Modified: code/trunk/testdata/testoutput2
===================================================================
--- code/trunk/testdata/testoutput2 2014-10-05 17:55:25 UTC (rev 96)
+++ code/trunk/testdata/testoutput2 2014-10-06 17:28:42 UTC (rev 97)
@@ -4303,21 +4303,6 @@
Last code unit = 'c'
Subject length lower bound = 3
-/(a+)*zz/I
-Capturing subpattern count = 1
-Starting code units: a z
-Last code unit = 'z'
-Subject length lower bound = 2
- aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazzbbbbbb\=find_limits
-Minimum match limit = 8
-Minimum recursion limit = 6
- 0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazz
- 1: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
- aaaaaaaaaaaaaz\=find_limits
-Minimum match limit = 32768
-Minimum recursion limit = 29
-No match
-
/(aaa(?C1)bbb|ab)/I
Capturing subpattern count = 1
First code unit = 'a'
@@ -6143,16 +6128,6 @@
1: \x0d
2: \x0a
-!((?:\s|//.*\\n|/[*](?:\\n|.)*?[*]/)*)!I
-Capturing subpattern count = 1
-May match empty string
-Subject length lower bound = 0
- /* this is a C style comment */\=find_limits
-Minimum match limit = 120
-Minimum recursion limit = 6
- 0: /* this is a C style comment */
- 1: /* this is a C style comment */
-
/(?P<B>25[0-5]|2[0-4]\d|[01]?\d?\d)(?:\.(?P>B)){3}/I
Capturing subpattern count = 1
Named capturing subpatterns:
@@ -10876,28 +10851,6 @@
Last code unit = 'c'
Subject length lower bound = 6
-/^(?>a)++/
- aa\=find_limits
-Minimum match limit = 5
-Minimum recursion limit = 2
- 0: aa
- aaaaaaaaa\=find_limits
-Minimum match limit = 12
-Minimum recursion limit = 2
- 0: aaaaaaaaa
-
-/(a)(?1)++/
- aa\=find_limits
-Minimum match limit = 7
-Minimum recursion limit = 4
- 0: aa
- 1: a
- aaaaaaaaa\=find_limits
-Minimum match limit = 21
-Minimum recursion limit = 4
- 0: aaaaaaaaa
- 1: a
-
/(?:(foo)|(bar)|(baz))X/allcaptures
bazfooX
0: fooX
@@ -10931,7 +10884,6 @@
Matched, but too many substrings
0: fooX
bazfooX\=ovector=2
-Matched, but too many substrings
0: fooX
1: foo
bazfooX\=ovector=3
@@ -11097,18 +11049,6 @@
End
------------------------------------------------------------------
-/((?2))((?1))/
- abc
-Failed: error -49: nested recursion at the same subject position
-
-/((?(R2)a+|(?1)b))/
- aaaabcde
-Failed: error -49: nested recursion at the same subject position
-
-/(?(R)a*(?1)|((?R))b)/
- aaaabcde
-Failed: error -49: nested recursion at the same subject position
-
/(a+|(?R)b)/
Failed: error 140 at offset 7: recursion could loop indefinitely
@@ -11227,24 +11167,6 @@
0: z
0+ bx
-/a(?:.)*?a/ims
- abbbbbbbbbbbbbbbbbbbbba\=find_limits
-Minimum match limit = 65
-Minimum recursion limit = 2
- 0: abbbbbbbbbbbbbbbbbbbbba
-
-/a(?:.(*THEN))*?a/ims
- abbbbbbbbbbbbbbbbbbbbba\=find_limits
-Minimum match limit = 86
-Minimum recursion limit = 45
- 0: abbbbbbbbbbbbbbbbbbbbba
-
-/a(?:.(*THEN:ABC))*?a/ims
- abbbbbbbbbbbbbbbbbbbbba\=find_limits
-Minimum match limit = 86
-Minimum recursion limit = 45
- 0: abbbbbbbbbbbbbbbbbbbbba
-
/^(?>a+)(?>(z+))\w/B
------------------------------------------------------------------
Bra
@@ -11311,32 +11233,6 @@
End
------------------------------------------------------------------
-/^(?>a+)(?>b+)(?>c+)(?>d+)(?>e+)/
- aabbccddee\=find_limits
-Minimum match limit = 7
-Minimum recursion limit = 2
- 0: aabbccddee
-
-/^(?>(a+))(?>(b+))(?>(c+))(?>(d+))(?>(e+))/
- aabbccddee\=find_limits
-Minimum match limit = 17
-Minimum recursion limit = 16
- 0: aabbccddee
- 1: aa
- 2: bb
- 3: cc
- 4: dd
- 5: ee
-
-/^(?>(a+))(?>b+)(?>(c+))(?>d+)(?>(e+))/
- aabbccddee\=find_limits
-Minimum match limit = 13
-Minimum recursion limit = 10
- 0: aabbccddee
- 1: aa
- 2: cc
- 3: ee
-
/^a\x41z/alt_bsux,allow_empty_class,match_unset_backref,dupnames
aAz
0: aAz
@@ -12080,93 +11976,6 @@
bnn
0: bn
-# ---------------------
-
-/(*LIMIT_MATCH=12bc)abc/
-Failed: error 160 at offset 0: (*VERB) not recognized or malformed
-
-/(*LIMIT_MATCH=4294967290)abc/
-Failed: error 160 at offset 0: (*VERB) not recognized or malformed
-
-/(*LIMIT_RECURSION=4294967280)abc/I
-Capturing subpattern count = 0
-Recursion limit = 4294967280
-First code unit = 'a'
-Last code unit = 'c'
-Subject length lower bound = 3
-
-/(a+)*zz/
- aaaaaaaaaaaaaz
-No match
- aaaaaaaaaaaaaz\=match_limit=3000
-Failed: error -45: match limit exceeded
-
-/(a+)*zz/
- aaaaaaaaaaaaaz\=recursion_limit=10
-Failed: error -50: recursion limit exceeded
-
-/(*LIMIT_MATCH=3000)(a+)*zz/I
-Capturing subpattern count = 1
-Match limit = 3000
-Starting code units: a z
-Last code unit = 'z'
-Subject length lower bound = 2
- aaaaaaaaaaaaaz
-Failed: error -45: match limit exceeded
- aaaaaaaaaaaaaz\=match_limit=60000
-Failed: error -45: match limit exceeded
-
-/(*LIMIT_MATCH=60000)(*LIMIT_MATCH=3000)(a+)*zz/I
-Capturing subpattern count = 1
-Match limit = 3000
-Starting code units: a z
-Last code unit = 'z'
-Subject length lower bound = 2
- aaaaaaaaaaaaaz
-Failed: error -45: match limit exceeded
-
-/(*LIMIT_MATCH=60000)(a+)*zz/I
-Capturing subpattern count = 1
-Match limit = 60000
-Starting code units: a z
-Last code unit = 'z'
-Subject length lower bound = 2
- aaaaaaaaaaaaaz
-No match
- aaaaaaaaaaaaaz\=match_limit=3000
-Failed: error -45: match limit exceeded
-
-/(*LIMIT_RECURSION=10)(a+)*zz/I
-Capturing subpattern count = 1
-Recursion limit = 10
-Starting code units: a z
-Last code unit = 'z'
-Subject length lower bound = 2
- aaaaaaaaaaaaaz
-Failed: error -50: recursion limit exceeded
- aaaaaaaaaaaaaz\=recursion_limit=1000
-Failed: error -50: recursion limit exceeded
-
-/(*LIMIT_RECURSION=10)(*LIMIT_RECURSION=1000)(a+)*zz/I
-Capturing subpattern count = 1
-Recursion limit = 1000
-Starting code units: a z
-Last code unit = 'z'
-Subject length lower bound = 2
- aaaaaaaaaaaaaz
-No match
-
-/(*LIMIT_RECURSION=1000)(a+)*zz/I
-Capturing subpattern count = 1
-Recursion limit = 1000
-Starting code units: a z
-Last code unit = 'z'
-Subject length lower bound = 2
- aaaaaaaaaaaaaz
-No match
- aaaaaaaaaaaaaz\=recursion_limit=10
-Failed: error -50: recursion limit exceeded
-
# This test causes a segfault with Perl 5.18.0
/^(?=(a)){0}b(?1)/