| 1 |
ChangeLog for PCRE |
ChangeLog for PCRE |
| 2 |
------------------ |
------------------ |
| 3 |
|
|
| 4 |
Version 8.00 05-Oct-09 |
Version 8.01 11-Dec-09 |
| 5 |
|
---------------------- |
| 6 |
|
|
| 7 |
|
1. If a pattern contained a conditional subpattern with only one branch (in |
| 8 |
|
particular, this includes all (DEFINE) patterns), a call to pcre_study() |
| 9 |
|
computed the wrong minimum data length (which is of course zero for such |
| 10 |
|
subpatterns). |
| 11 |
|
|
| 12 |
|
2. For patterns such as (?i)a(?-i)b|c where an option setting at the start of |
| 13 |
|
the pattern is reset in the first branch, pcre_compile() failed with |
| 14 |
|
"internal error: code overflow at offset...". This happened only when |
| 15 |
|
the reset was to the original external option setting. (An optimization |
| 16 |
|
abstracts leading options settings into an external setting, which was the |
| 17 |
|
cause of this.) |
| 18 |
|
|
| 19 |
|
3. A pattern such as ^(?!a(*SKIP)b) where a negative assertion contained one |
| 20 |
|
of the verbs SKIP, PRUNE, or COMMIT, did not work correctly. When the |
| 21 |
|
assertion pattern did not match (meaning that the assertion was true), it |
| 22 |
|
was incorrectly treated as false if the SKIP had been reached during the |
| 23 |
|
matching. This also applied to assertions used as conditions. |
| 24 |
|
|
| 25 |
|
4. If an item that is not supported by pcre_dfa_exec() was encountered in an |
| 26 |
|
assertion subpattern, including such a pattern used as a condition, |
| 27 |
|
unpredictable results occurred, instead of the error return |
| 28 |
|
PCRE_ERROR_DFA_UITEM. |
| 29 |
|
|
| 30 |
|
5. The C++ GlobalReplace function was not working like Perl for the special |
| 31 |
|
situation when an empty string is matched. It now does the fancy magic |
| 32 |
|
stuff that is necessary. |
| 33 |
|
|
| 34 |
|
6. In pcre_internal.h, obsolete includes to setjmp.h and stdarg.h have been |
| 35 |
|
removed. (These were left over from very, very early versions of PCRE.) |
| 36 |
|
|
| 37 |
|
7. Some cosmetic changes to the code to make life easier when compiling it |
| 38 |
|
as part of something else: |
| 39 |
|
|
| 40 |
|
(a) Change DEBUG to PCRE_DEBUG. |
| 41 |
|
|
| 42 |
|
(b) In pcre_compile(), rename the member of the "branch_chain" structure |
| 43 |
|
called "current" as "current_branch", to prevent a collision with the |
| 44 |
|
Linux macro when compiled as a kernel module. |
| 45 |
|
|
| 46 |
|
(c) In pcre_study(), rename the function set_bit() as set_table_bit(), to |
| 47 |
|
prevent a collision with the Linux macro when compiled as a kernel |
| 48 |
|
module. |
| 49 |
|
|
| 50 |
|
8. In pcre_compile() there are some checks for integer overflows that used to |
| 51 |
|
cast potentially large values to (double). This has been changed to that |
| 52 |
|
when building, a check for int64_t is made, and if it is found, it is used |
| 53 |
|
instead, thus avoiding the use of floating point arithmetic. (There is no |
| 54 |
|
other use of FP in PCRE.) If int64_t is not found, the fallback is to |
| 55 |
|
double. |
| 56 |
|
|
| 57 |
|
9. Added two casts to avoid signed/unsigned warnings from VS Studio Express |
| 58 |
|
2005 (difference between two addresses compared to an unsigned value). |
| 59 |
|
|
| 60 |
|
10. Change the standard AC_CHECK_LIB test for libbz2 in configure.ac to a |
| 61 |
|
custom one, because of the following reported problem in Windows: |
| 62 |
|
|
| 63 |
|
- libbz2 uses the Pascal calling convention (WINAPI) for the functions |
| 64 |
|
under Win32. |
| 65 |
|
- The standard autoconf AC_CHECK_LIB fails to include "bzlib.h", |
| 66 |
|
therefore missing the function definition. |
| 67 |
|
- The compiler thus generates a "C" signature for the test function. |
| 68 |
|
- The linker fails to find the "C" function. |
| 69 |
|
- PCRE fails to configure if asked to do so against libbz2. |
| 70 |
|
|
| 71 |
|
|
| 72 |
|
Version 8.00 19-Oct-09 |
| 73 |
---------------------- |
---------------------- |
| 74 |
|
|
| 75 |
1. The table for translating pcre_compile() error codes into POSIX error codes |
1. The table for translating pcre_compile() error codes into POSIX error codes |