| 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 |
---------------------- |
---------------------- |