summaryrefslogtreecommitdiffstats
path: root/src/3rdparty/pcre/patches/pcre-r1495.patch
blob: d8b4ce097a42b0e5b67af656d0c71c85b1d9def1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Index: pcre_compile.c
===================================================================
--- pcre_compile.c	(revision 1494)
+++ pcre_compile.c	(revision 1495)
@@ -8267,12 +8267,16 @@
 
     /* If it was a capturing subpattern, check to see if it contained any
     recursive back references. If so, we must wrap it in atomic brackets.
-    In any event, remove the block from the chain. */
+    Because we are moving code along, we must ensure that any pending recursive
+    references are updated. In any event, remove the block from the chain. */
 
     if (capnumber > 0)
       {
       if (cd->open_caps->flag)
         {
+        *code = OP_END;
+        adjust_recurse(start_bracket, 1 + LINK_SIZE,
+          (options & PCRE_UTF8) != 0, cd, cd->hwm);
         memmove(start_bracket + 1 + LINK_SIZE, start_bracket,
           IN_UCHARS(code - start_bracket));
         *start_bracket = OP_ONCE;