1 |
ChangeLog for PCRE |
ChangeLog for PCRE |
2 |
------------------ |
------------------ |
3 |
|
|
4 |
Version 8.01 06-Jan-10 |
Version 8.01 01-Jan-10 |
5 |
---------------------- |
---------------------- |
6 |
|
|
7 |
1. If a pattern contained a conditional subpattern with only one branch (in |
1. If a pattern contained a conditional subpattern with only one branch (in |
113 |
equivalent. It's not enough to call AC_CHECK_FUNCS: hpux has a strtoll, for |
equivalent. It's not enough to call AC_CHECK_FUNCS: hpux has a strtoll, for |
114 |
instance, but it only takes 2 args instead of 3!" |
instance, but it only takes 2 args instead of 3!" |
115 |
|
|
116 |
|
18. A subtle bug concerned with back references has been fixed by a change of |
117 |
|
specification, with a corresponding code fix. A pattern such as |
118 |
|
^(xa|=?\1a)+$ which contains a back reference inside the group to which it |
119 |
|
refers, was giving matches when it shouldn't. For example, xa=xaaa would |
120 |
|
match that pattern. Interestingly, Perl (at least up to 5.11.3) has the |
121 |
|
same bug. Such groups have to be quantified to be useful, or contained |
122 |
|
inside another quantified group. (If there's no repetition, the reference |
123 |
|
can never match.) The problem arises because, having left the group and |
124 |
|
moved on to the rest of the pattern, a later failure that backtracks into |
125 |
|
the group uses the captured value from the final iteration of the group |
126 |
|
rather than the correct earlier one. I have fixed this in PCRE by forcing |
127 |
|
any group that contains a reference to itself to be an atomic group; that |
128 |
|
is, there cannot be any backtracking into it once it has completed. This is |
129 |
|
similar to recursive and subroutine calls. |
130 |
|
|
131 |
|
|
132 |
Version 8.00 19-Oct-09 |
Version 8.00 19-Oct-09 |
133 |
---------------------- |
---------------------- |