| 110 |
20. If /S is present twice on a test pattern in pcretest input, it *disables* |
20. If /S is present twice on a test pattern in pcretest input, it *disables* |
| 111 |
studying, thereby overriding the use of -s on the command line. This is |
studying, thereby overriding the use of -s on the command line. This is |
| 112 |
necessary for one or two tests to keep the output identical in both cases. |
necessary for one or two tests to keep the output identical in both cases. |
| 113 |
|
|
| 114 |
|
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. |
| 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 |
|
|
| 170 |
Version 8.12 15-Jan-2011 |
Version 8.12 15-Jan-2011 |