Fix bug in previous fix.
diff --git a/src/pcre2_compile.c b/src/pcre2_compile.c
index 2955432..96404b8 100644
--- a/src/pcre2_compile.c
+++ b/src/pcre2_compile.c
@@ -3088,6 +3088,7 @@
reqcuflagsptr place to put the last required code unit flags, or a negative number
bcptr points to current branch chain
cond_depth conditional nesting depth
+ save_hwm_offset high water mark for the start of the group
cb contains pointers to tables etc.
lengthptr NULL during the real compile phase
points to length accumulator during pre-compile phase
@@ -3102,6 +3103,7 @@
uint32_t *firstcuptr, int32_t *firstcuflagsptr,
uint32_t *reqcuptr, int32_t *reqcuflagsptr,
branch_chain *bcptr, int cond_depth,
+ size_t save_hwm_offset,
compile_block *cb, size_t *lengthptr)
{
int repeat_min = 0, repeat_max = 0; /* To please picky compilers */
@@ -3129,7 +3131,6 @@
PCRE2_SPTR nestptr = NULL;
PCRE2_UCHAR *previous = NULL;
PCRE2_UCHAR *previous_callout = NULL;
-size_t save_hwm_offset = 0;
uint8_t classbits[32];
/* We can fish out the UTF setting once and for all into a BOOL, but we must
@@ -6979,7 +6980,7 @@
if (!compile_branch(&options, &code, &ptr, errorcodeptr, &branchfirstcu,
&branchfirstcuflags, &branchreqcu, &branchreqcuflags, &bc,
- cond_depth, cb, (lengthptr == NULL)? NULL : &length))
+ cond_depth, save_hwm_offset, cb, (lengthptr == NULL)? NULL : &length))
{
*ptrptr = ptr;
return FALSE;
diff --git a/testdata/testinput2 b/testdata/testinput2
index 857c065..2a61a95 100644
--- a/testdata/testinput2
+++ b/testdata/testinput2
@@ -4294,4 +4294,6 @@
/.((?3)(?R)()(?2)|\1|$)()/B
+/(?1)()((((((\1++))\x85)+)|))/
+
# End of testinput2
diff --git a/testdata/testoutput2 b/testdata/testoutput2
index 3a0dd0c..9f4ddba 100644
--- a/testdata/testoutput2
+++ b/testdata/testoutput2
@@ -14391,4 +14391,6 @@
End
------------------------------------------------------------------
+/(?1)()((((((\1++))\x85)+)|))/
+
# End of testinput2