1 |
ChangeLog for PCRE |
ChangeLog for PCRE |
2 |
------------------ |
------------------ |
3 |
|
|
4 |
Version 7.9 xx-xxx-09 |
Version 8.00 ??-???-?? |
5 |
|
---------------------- |
6 |
|
|
7 |
|
1. The table for translating pcre_compile() error codes into POSIX error codes |
8 |
|
was out-of-date, and there was no check on the pcre_compile() error code |
9 |
|
being within the table. This could lead to an OK return being given in |
10 |
|
error. |
11 |
|
|
12 |
|
2. Changed the call to open a subject file in pcregrep from fopen(pathname, |
13 |
|
"r") to fopen(pathname, "rb"), which fixed a problem with some of the tests |
14 |
|
in a Windows environment. |
15 |
|
|
16 |
|
3. The pcregrep --count option prints the count for each file even when it is |
17 |
|
zero, as does GNU grep. However, pcregrep was also printing all files when |
18 |
|
--files-with-matches was added. Now, when both options are given, it prints |
19 |
|
counts only for those files that have at least one match. (GNU grep just |
20 |
|
prints the file name in this circumstance, but including the count seems |
21 |
|
more useful - otherwise, why use --count?) Also ensured that the |
22 |
|
combination -clh just lists non-zero counts, with no names. |
23 |
|
|
24 |
|
4. The long form of the pcregrep -F option was incorrectly implemented as |
25 |
|
--fixed_strings instead of --fixed-strings. This is an incompatible change, |
26 |
|
but it seems right to fix it, and I didn't think it was worth preserving |
27 |
|
the old behaviour. |
28 |
|
|
29 |
|
|
30 |
|
Version 7.9 11-Apr-09 |
31 |
--------------------- |
--------------------- |
32 |
|
|
33 |
1. When building with support for bzlib/zlib (pcregrep) and/or readline |
1. When building with support for bzlib/zlib (pcregrep) and/or readline |
43 |
but BOOL is not. |
but BOOL is not. |
44 |
|
|
45 |
3. The pcre_config() function was treating the PCRE_MATCH_LIMIT and |
3. The pcre_config() function was treating the PCRE_MATCH_LIMIT and |
46 |
PCRE_MATCH_LIMIT_RETURSION values as ints, when they should be long ints. |
PCRE_MATCH_LIMIT_RECURSION values as ints, when they should be long ints. |
47 |
|
|
48 |
4. The pcregrep documentation said spaces were inserted as well as colons (or |
4. The pcregrep documentation said spaces were inserted as well as colons (or |
49 |
hyphens) following file names and line numbers when outputting matching |
hyphens) following file names and line numbers when outputting matching |
68 |
correctly handled. The rule now is that both the assertion and what follows |
correctly handled. The rule now is that both the assertion and what follows |
69 |
in the first alternative must satisfy the test. |
in the first alternative must satisfy the test. |
70 |
|
|
71 |
9. If auto-callout was enabled in a pattern with a conditional group, PCRE |
9. If auto-callout was enabled in a pattern with a conditional group whose |
72 |
could crash during matching. |
condition was an assertion, PCRE could crash during matching, both with |
73 |
|
pcre_exec() and pcre_dfa_exec(). |
74 |
|
|
75 |
10. The PCRE_DOLLAR_ENDONLY option was not working when pcre_dfa_exec() was |
10. The PCRE_DOLLAR_ENDONLY option was not working when pcre_dfa_exec() was |
76 |
used for matching. |
used for matching. |
91 |
from Martin Jerabek that uses macro names for all relevant character and |
from Martin Jerabek that uses macro names for all relevant character and |
92 |
string constants. |
string constants. |
93 |
|
|
94 |
|
18. Added to pcre_internal.h two configuration checks: (a) If both EBCDIC and |
95 |
|
SUPPORT_UTF8 are set, give an error; (b) If SUPPORT_UCP is set without |
96 |
|
SUPPORT_UTF8, define SUPPORT_UTF8. The "configure" script handles both of |
97 |
|
these, but not everybody uses configure. |
98 |
|
|
99 |
|
19. A conditional group that had only one branch was not being correctly |
100 |
|
recognized as an item that could match an empty string. This meant that an |
101 |
|
enclosing group might also not be so recognized, causing infinite looping |
102 |
|
(and probably a segfault) for patterns such as ^"((?(?=[a])[^"])|b)*"$ |
103 |
|
with the subject "ab", where knowledge that the repeated group can match |
104 |
|
nothing is needed in order to break the loop. |
105 |
|
|
106 |
|
20. If a pattern that was compiled with callouts was matched using pcre_dfa_ |
107 |
|
exec(), but without supplying a callout function, matching went wrong. |
108 |
|
|
109 |
|
21. If PCRE_ERROR_MATCHLIMIT occurred during a recursion, there was a memory |
110 |
|
leak if the size of the offset vector was greater than 30. When the vector |
111 |
|
is smaller, the saved offsets during recursion go onto a local stack |
112 |
|
vector, but for larger vectors malloc() is used. It was failing to free |
113 |
|
when the recursion yielded PCRE_ERROR_MATCH_LIMIT (or any other "abnormal" |
114 |
|
error, in fact). |
115 |
|
|
116 |
|
22. There was a missing #ifdef SUPPORT_UTF8 round one of the variables in the |
117 |
|
heapframe that is used only when UTF-8 support is enabled. This caused no |
118 |
|
problem, but was untidy. |
119 |
|
|
120 |
|
23. Steven Van Ingelgem's patch to CMakeLists.txt to change the name |
121 |
|
CMAKE_BINARY_DIR to PROJECT_BINARY_DIR so that it works when PCRE is |
122 |
|
included within another project. |
123 |
|
|
124 |
|
24. Steven Van Ingelgem's patches to add more options to the CMake support, |
125 |
|
slightly modified by me: |
126 |
|
|
127 |
|
(a) PCRE_BUILD_TESTS can be set OFF not to build the tests, including |
128 |
|
not building pcregrep. |
129 |
|
|
130 |
|
(b) PCRE_BUILD_PCREGREP can be see OFF not to build pcregrep, but only |
131 |
|
if PCRE_BUILD_TESTS is also set OFF, because the tests use pcregrep. |
132 |
|
|
133 |
|
25. Forward references, both numeric and by name, in patterns that made use of |
134 |
|
duplicate group numbers, could behave incorrectly or give incorrect errors, |
135 |
|
because when scanning forward to find the reference group, PCRE was not |
136 |
|
taking into account the duplicate group numbers. A pattern such as |
137 |
|
^X(?3)(a)(?|(b)|(q))(Y) is an example. |
138 |
|
|
139 |
|
26. Changed a few more instances of "const unsigned char *" to USPTR, making |
140 |
|
the feature of a custom pointer more persuasive (as requested by a user). |
141 |
|
|
142 |
|
27. Wrapped the definitions of fileno and isatty for Windows, which appear in |
143 |
|
pcretest.c, inside #ifndefs, because it seems they are sometimes already |
144 |
|
pre-defined. |
145 |
|
|
146 |
|
28. Added support for (*UTF8) at the start of a pattern. |
147 |
|
|
148 |
|
29. Arrange for flags added by the "release type" setting in CMake to be shown |
149 |
|
in the configuration summary. |
150 |
|
|
151 |
|
|
152 |
Version 7.8 05-Sep-08 |
Version 7.8 05-Sep-08 |
153 |
--------------------- |
--------------------- |