| 113 |
|
|
| 114 |
21. When (*ACCEPT) was used in an assertion that matched an empty string and |
21. When (*ACCEPT) was used in an assertion that matched an empty string and |
| 115 |
PCRE_NOTEMPTY was set, PCRE applied the non-empty test to the assertion. |
PCRE_NOTEMPTY was set, PCRE applied the non-empty test to the assertion. |
| 116 |
|
|
| 117 |
|
22. When an atomic group that contained a capturing parenthesis was |
| 118 |
|
successfully matched, but the branch in which it appeared failed, the |
| 119 |
|
capturing was not being forgotten if a higher numbered group was later |
| 120 |
|
captured. For example, /(?>(a))b|(a)c/ when matching "ac" set capturing |
| 121 |
|
group 1 to "a", when in fact it should be unset. This applied to multi- |
| 122 |
|
branched capturing and non-capturing groups, repeated or not, and also to |
| 123 |
|
positive assertions (capturing in negative assertions is not well defined |
| 124 |
|
in PCRE) and also to nested atomic groups. |
| 125 |
|
|
| 126 |
|
23. Add the ++ qualifier feature to pcretest, to show the remainder of the |
| 127 |
|
subject after a captured substring (to make it easier to tell which of a |
| 128 |
|
number of identical substrings has been captured). |
| 129 |
|
|
| 130 |
|
24. The way atomic groups are processed by pcre_exec() has been changed so that |
| 131 |
|
if they are repeated, backtracking one repetition now resets captured |
| 132 |
|
values correctly. For example, if ((?>(a+)b)+aabab) is matched against |
| 133 |
|
"aaaabaaabaabab" the value of captured group 2 is now correctly recorded as |
| 134 |
|
"aaa". Previously, it would have been "a". As part of this code |
| 135 |
|
refactoring, the way recursive calls are handled has also been changed. |
| 136 |
|
|
| 137 |
|
24. If an assertion condition captured any substrings, they were not passed |
| 138 |
|
back unless some other capturing happened later. For example, if |
| 139 |
|
(?(?=(a))a) was matched against "a", no capturing was returned. |
| 140 |
|
|
| 141 |
|
25. When studying a pattern that contained subroutine calls or assertions, |
| 142 |
|
the code for finding the minimum length of a possible match was handling |
| 143 |
|
direct recursions such as (xxx(?1)|yyy) but not mutual recursions (where |
| 144 |
|
group 1 called group 2 while simultaneously a separate group 2 called group |
| 145 |
|
1). A stack overflow occurred in this case. I have fixed this by limiting |
| 146 |
|
the recursion depth to 10. |
| 147 |
|
|
| 148 |
|
26. Updated RunTest.bat in the distribution to the version supplied by Tom |
| 149 |
|
Fortmann. This supports explicit test numbers on the command line, and has |
| 150 |
|
argument validation and error reporting. |
| 151 |
|
|
| 152 |
|
27. An instance of \X with an unlimited repeat could fail if at any point the |
| 153 |
|
first character it looked at was a mark character. |
| 154 |
|
|
| 155 |
|
28. Some minor code refactoring concerning Unicode properties and scripts |
| 156 |
|
should reduce the stack requirement of match() slightly. |
| 157 |
|
|
| 158 |
|
29. Added the '=' option to pcretest to check the setting of unused capturing |
| 159 |
|
slots at the end of the pattern, which are documented as being -1, but are |
| 160 |
|
not included in the return count. |
| 161 |
|
|
| 162 |
|
30. If \k was not followed by a braced, angle-bracketed, or quoted name, PCRE |
| 163 |
|
compiled something random. Now it gives a compile-time error (as does |
| 164 |
|
Perl). |
| 165 |
|
|
| 166 |
|
31. A *MARK encountered during the processing of a positive assertion is now |
| 167 |
|
recorded and passed back (compatible with Perl). |
| 168 |
|
|
| 169 |
|
32. If --only-matching or --colour was set on a pcregrep call whose pattern |
| 170 |
|
had alternative anchored branches, the search for a second match in a line |
| 171 |
|
was done as if at the line start. Thus, for example, /^01|^02/ incorrectly |
| 172 |
|
matched the line "0102" twice. The same bug affected patterns that started |
| 173 |
|
with a backwards assertion. For example /\b01|\b02/ also matched "0102" |
| 174 |
|
twice. |
| 175 |
|
|
| 176 |
|
33. Previously, PCRE did not allow quantification of assertions. However, Perl |
| 177 |
|
does, and because of capturing effects, quantifying parenthesized |
| 178 |
|
assertions may at times be useful. Quantifiers are now allowed for |
| 179 |
|
parenthesized assertions. |
| 180 |
|
|
| 181 |
|
34. A minor code tidy in pcre_compile() when checking options for \R usage. |
| 182 |
|
|
| 183 |
|
|
| 184 |
Version 8.12 15-Jan-2011 |
Version 8.12 15-Jan-2011 |