On Tue, 3 Jul 2018, ND via Pcre-dev wrote:

> PCRE2 version 10.31 2018-02-12
> /(?1)(*F)|(a(*COMMIT))/
> a
> 0: a
> 1: a
> 
> 
> In Perl this pattern not matched.
> 
> There are differences in how PCRE and Perl act with control verbs in
> subroutines.
> This is documented in PCRE:
> "Perl's treatment of subroutines is different in some cases.

The documentation doesn't seem right, even with the current code. When 
pcre2_match() was upgraded not to use the system stack, backtracking 
into subroutines came as a by-product. I probably didn't really consider 
the backtracking verbs at that time.

Thank you for noticing the odd effect. I will investigate in due course, 
when I get time.

> ...
> (*COMMIT), (*SKIP), and (*PRUNE) in a subpattern called as a subroutine cause
> the subroutine match to fail."

... but in your example it succeeds! So something is definitely wrong.

Philip

-- 
Philip Hazel

-- 
## List details at https://lists.exim.org/mailman/listinfo/pcre-dev 

Reply via email to