85 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			85 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
| From bfc1dfa660c24dc7a75108d934290e50d7db2719 Mon Sep 17 00:00:00 2001
 | |
| From: ph10 <ph10@2f5784b3-3f2a-0410-8824-cb99058d5e15>
 | |
| Date: Fri, 27 Nov 2015 17:41:04 +0000
 | |
| Subject: [PATCH 2/5] Fix bug for isolated \E between an item and its qualifier
 | |
|  when auto callout is set.
 | |
| 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@1613 2f5784b3-3f2a-0410-8824-cb99058d5e15
 | |
| 
 | |
| Petr Písař: Ported to 8.38.
 | |
| 
 | |
| diff --git a/pcre_compile.c b/pcre_compile.c
 | |
| index 3670f1e..5786cd3 100644
 | |
| --- a/pcre_compile.c
 | |
| +++ b/pcre_compile.c
 | |
| @@ -4645,9 +4645,10 @@ for (;; ptr++)
 | |
|      goto FAILED;
 | |
|      }
 | |
|  
 | |
| -  /* If in \Q...\E, check for the end; if not, we have a literal */
 | |
| +  /* If in \Q...\E, check for the end; if not, we have a literal. Otherwise an
 | |
| +  isolated \E is ignored. */
 | |
|  
 | |
| -  if (inescq && c != CHAR_NULL)
 | |
| +  if (c != CHAR_NULL)
 | |
|      {
 | |
|      if (c == CHAR_BACKSLASH && ptr[1] == CHAR_E)
 | |
|        {
 | |
| @@ -4655,7 +4656,7 @@ for (;; ptr++)
 | |
|        ptr++;
 | |
|        continue;
 | |
|        }
 | |
| -    else
 | |
| +    else if (inescq)
 | |
|        {
 | |
|        if (previous_callout != NULL)
 | |
|          {
 | |
| @@ -4670,7 +4671,6 @@ for (;; ptr++)
 | |
|          }
 | |
|        goto NORMAL_CHAR;
 | |
|        }
 | |
| -    /* Control does not reach here. */
 | |
|      }
 | |
|  
 | |
|    /* In extended mode, skip white space and comments. We need a loop in order
 | |
| diff --git a/testdata/testinput2 b/testdata/testinput2
 | |
| index 92e3359..e8ca4fe 100644
 | |
| --- a/testdata/testinput2
 | |
| +++ b/testdata/testinput2
 | |
| @@ -4225,4 +4225,6 @@ backtracking verbs. --/
 | |
|  
 | |
|  /L(?#(|++<!(2)?/BCOZ
 | |
|  
 | |
| +/(A*)\E+/CBZ
 | |
| +
 | |
|  /-- End of testinput2 --/
 | |
| diff --git a/testdata/testoutput2 b/testdata/testoutput2
 | |
| index 2cf7a90..09756b8 100644
 | |
| --- a/testdata/testoutput2
 | |
| +++ b/testdata/testoutput2
 | |
| @@ -14610,4 +14610,18 @@ No match
 | |
|          End
 | |
|  ------------------------------------------------------------------
 | |
|  
 | |
| +/(A*)\E+/CBZ
 | |
| +------------------------------------------------------------------
 | |
| +        Bra
 | |
| +        Callout 255 0 7
 | |
| +        SCBra 1
 | |
| +        Callout 255 1 2
 | |
| +        A*
 | |
| +        Callout 255 3 0
 | |
| +        KetRmax
 | |
| +        Callout 255 7 0
 | |
| +        Ket
 | |
| +        End
 | |
| +------------------------------------------------------------------
 | |
| +
 | |
|  /-- End of testinput2 --/
 | |
| -- 
 | |
| 2.4.3
 | |
| 
 |