summaryrefslogtreecommitdiff
path: root/testing/pcre/r661.diff
diff options
context:
space:
mode:
Diffstat (limited to 'testing/pcre/r661.diff')
-rw-r--r--testing/pcre/r661.diff26
1 files changed, 26 insertions, 0 deletions
diff --git a/testing/pcre/r661.diff b/testing/pcre/r661.diff
new file mode 100644
index 000000000..7bed4ce2e
--- /dev/null
+++ b/testing/pcre/r661.diff
@@ -0,0 +1,26 @@
+--- code/trunk/pcre_compile.c 2011/08/02 11:00:40 654
++++ code/trunk/pcre_compile.c 2011/08/21 09:00:54 661
+@@ -2295,8 +2295,13 @@
+ A user pointed out that PCRE was rejecting [:a[:digit:]] whereas Perl was not.
+ It seems that the appearance of a nested POSIX class supersedes an apparent
+ external class. For example, [:a[:digit:]b:] matches "a", "b", ":", or
+-a digit. Also, unescaped square brackets may also appear as part of class
+-names. For example, [:a[:abc]b:] gives unknown class "[:abc]b:]"in Perl.
++a digit.
++
++In Perl, unescaped square brackets may also appear as part of class names. For
++example, [:a[:abc]b:] gives unknown POSIX class "[:abc]b:]". However, for
++[:a[:abc]b][b:] it gives unknown POSIX class "[:abc]b][b:]", which does not
++seem right at all. PCRE does not allow closing square brackets in POSIX class
++names.
+
+ Arguments:
+ ptr pointer to the initial [
+@@ -2314,6 +2319,7 @@
+ {
+ if (*ptr == CHAR_BACKSLASH && ptr[1] == CHAR_RIGHT_SQUARE_BRACKET)
+ ptr++;
++ else if (*ptr == CHAR_RIGHT_SQUARE_BRACKET) return FALSE;
+ else
+ {
+ if (*ptr == terminator && ptr[1] == CHAR_RIGHT_SQUARE_BRACKET)