Blob Blame History Raw
From 17b16354612fa15b0d385e0ac57d0e0b4494ddac Mon Sep 17 00:00:00 2001
From: ph10 <ph10@2f5784b3-3f2a-0410-8824-cb99058d5e15>
Date: Wed, 18 Jun 2014 16:31:32 +0000
Subject: [PATCH] Fix bad starting data when char with more than one other case
 follows circumflex in multiline UTF mode.
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

git-svn-id: svn://vcs.exim.org/pcre/code/trunk@1485 2f5784b3-3f2a-0410-8824-cb99058d5e15
Signed-off-by: Petr Písař <ppisar@redhat.com>

Petr Pisar: Ported to 8.32.

Signed-off-by: Petr Písař <ppisar@redhat.com>
---
 pcre_compile.c       | 3 ++-
 testdata/testinput6  | 3 +++
 testdata/testinput7  | 3 +++
 testdata/testoutput6 | 4 ++++
 testdata/testoutput7 | 8 ++++++++
 5 files changed, 20 insertions(+), 1 deletion(-)

diff --git a/pcre_compile.c b/pcre_compile.c
index 5f0c8ed..7a2d7c7 100644
--- a/pcre_compile.c
+++ b/pcre_compile.c
@@ -3991,7 +3991,8 @@ for (;; ptr++)
     previous = NULL;
     if ((options & PCRE_MULTILINE) != 0)
       {
-      if (firstcharflags == REQ_UNSET) firstcharflags = REQ_NONE;
+      if (firstcharflags == REQ_UNSET) 
+        zerofirstcharflags = firstcharflags = REQ_NONE;
       *code++ = OP_CIRCM;
       }
     else *code++ = OP_CIRC;
diff --git a/testdata/testinput6 b/testdata/testinput6
index a4bfb3c..219a30e 100644
--- a/testdata/testinput6
+++ b/testdata/testinput6
@@ -1316,4 +1316,7 @@
 /\x{017f}+/8i
     \x{0053}\x{0073}\x{017f}
 
+/^s?c/mi8
+    scat
+
 /-- End of testinput6 --/
diff --git a/testdata/testinput7 b/testdata/testinput7
index b265f1f..252d246 100644
--- a/testdata/testinput7
+++ b/testdata/testinput7
@@ -669,4 +669,7 @@ of case for anything other than the ASCII letters. --/
 /is{2}t/8i
     iskt
 
+/^s?c/mi8I
+    scat
+
 /-- End of testinput7 --/
diff --git a/testdata/testoutput6 b/testdata/testoutput6
index 0182746..090d23f 100644
--- a/testdata/testoutput6
+++ b/testdata/testoutput6
@@ -2134,4 +2134,8 @@ No match
     \x{0053}\x{0073}\x{017f}
  0: Ss\x{17f}
 
+/^s?c/mi8
+    scat
+ 0: sc
+
 /-- End of testinput6 --/
diff --git a/testdata/testoutput7 b/testdata/testoutput7
index 4f8b7b9..5f0f546 100644
--- a/testdata/testoutput7
+++ b/testdata/testoutput7
@@ -1470,4 +1470,12 @@ No match
     iskt
 No match
 
+/^s?c/mi8I
+Capturing subpattern count = 0
+Options: caseless multiline utf
+First char at start or follows newline
+Need char = 'c' (caseless)
+    scat
+ 0: sc
+
 /-- End of testinput7 --/
-- 
1.9.3