https://bugs.exim.org/show_bug.cgi?id=2771

            Bug ID: 2771
           Summary: (*MARK) not returned from group with possessive
                    repetition
           Product: PCRE
           Version: 8.44
          Hardware: x86-64
                OS: Windows
            Status: NEW
          Severity: bug
          Priority: medium
         Component: Code
          Assignee: philip.ha...@gmail.com
          Reporter: unrave...@gmail.com
                CC: pcre-dev@exim.org

When (*MARK:NAME) is used inside a group which has a possessive quantifier with
no upper bound, the mark is not returned.  For example, with pcretest:

  re> /(?:A(*:X))*+/K
data> A
 0: A

By contrast, the mark is returned after removing + or adding an upper bound:

  re> /(?:A(*:X))*/K
data> A
 0: A
MK: X

  re> /(A(*:X)){1,999}+/K
data> A
 0: A
 1: A
MK: X

If a previous mark was set it is returned instead:

  re> /(*:Y)(A(*:X))*+/K
data> A
 0: A
 1: A
MK: Y

>From what I can tell this occurs because OP_MARK receives a return code of
MATCH_KETRPOS but sets mark only when it receives MATCH_MATCH or MATCH_ACCEPT.
Adding a check for MATCH_KETRPOS appears to solve the problem, but I'm not sure
this is correct for all cases.

-- 
You are receiving this mail because:
You are on the CC list for the bug.
-- 
## List details at https://lists.exim.org/mailman/listinfo/pcre-dev 

Reply via email to