summaryrefslogtreecommitdiffstats
path: root/src/3rdparty/pcre/patches/pcre-r1513.patch
blob: d84aa0cc616c267882cd66cc1ca59c6bca95b347 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Index: pcre_exec.c
===================================================================
--- pcre_exec.c	(revisione 1512)
+++ pcre_exec.c	(revisione 1513)
@@ -1404,8 +1404,11 @@
         condition = TRUE;
 
         /* Advance ecode past the assertion to the start of the first branch,
-        but adjust it so that the general choosing code below works. */
-
+        but adjust it so that the general choosing code below works. If the 
+        assertion has a quantifier that allows zero repeats we must skip over 
+        the BRAZERO. This is a lunatic thing to do, but somebody did! */
+        
+        if (*ecode == OP_BRAZERO) ecode++; 
         ecode += GET(ecode, 1);
         while (*ecode == OP_ALT) ecode += GET(ecode, 1);
         ecode += 1 + LINK_SIZE - PRIV(OP_lengths)[condcode];