/[pcre]/code/trunk/ChangeLog
ViewVC logotype

Diff of /code/trunk/ChangeLog

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 63 by nigel, Sat Feb 24 21:40:03 2007 UTC revision 69 by nigel, Sat Feb 24 21:40:18 2007 UTC
# Line 1  Line 1 
1  ChangeLog for PCRE  ChangeLog for PCRE
2  ------------------  ------------------
3    
4  Version 4.00 17-Feb-03  Version 4.3 21-May-03
5  ----------------------  ---------------------
6    
7    1. Two instances of @WIN_PREFIX@ omitted from the Windows targets in the
8       Makefile.
9    
10    2. Some refactoring to improve the quality of the code:
11    
12       (i)   The utf8_table... variables are now declared "const".
13    
14       (ii)  The code for \cx, which used the "case flipping" table to upper case
15             lower case letters, now just substracts 32. This is ASCII-specific,
16             but the whole concept of \cx is ASCII-specific, so it seems
17             reasonable.
18    
19       (iii) PCRE was using its character types table to recognize decimal and
20             hexadecimal digits in the pattern. This is silly, because it handles
21             only 0-9, a-f, and A-F, but the character types table is locale-
22             specific, which means strange things might happen. A private
23             table is now used for this - though it costs 256 bytes, a table is
24             much faster than multiple explicit tests. Of course, the standard
25             character types table is still used for matching digits in subject
26             strings against \d.
27    
28       (iv)  Strictly, the identifier ESC_t is reserved by POSIX (all identifiers
29             ending in _t are). So I've renamed it as ESC_tee.
30    
31    3. The first argument for regexec() in the POSIX wrapper should have been
32       defined as "const".
33    
34    4. Changed pcretest to use malloc() for its buffers so that they can be
35       Electric Fenced for debugging.
36    
37    5. There were several places in the code where, in UTF-8 mode, PCRE would try
38       to read one or more bytes before the start of the subject string. Often this
39       had no effect on PCRE's behaviour, but in some circumstances it could
40       provoke a segmentation fault.
41    
42    6. A lookbehind at the start of a pattern in UTF-8 mode could also cause PCRE
43       to try to read one or more bytes before the start of the subject string.
44    
45    7. A lookbehind in a pattern matched in non-UTF-8 mode on a PCRE compiled with
46       UTF-8 support could misbehave in various ways if the subject string
47       contained bytes with the 0x80 bit set and the 0x40 bit unset in a lookbehind
48       area. (PCRE was not checking for the UTF-8 mode flag, and trying to move
49       back over UTF-8 characters.)
50    
51    
52    Version 4.2 14-Apr-03
53    ---------------------
54    
55    1. Typo "#if SUPPORT_UTF8" instead of "#ifdef SUPPORT_UTF8" fixed.
56    
57    2. Changes to the building process, supplied by Ronald Landheer-Cieslak
58         [ON_WINDOWS]: new variable, "#" on non-Windows platforms
59         [NOT_ON_WINDOWS]: new variable, "#" on Windows platforms
60         [WIN_PREFIX]: new variable, "cyg" for Cygwin
61         * Makefile.in: use autoconf substitution for OBJEXT, EXEEXT, BUILD_OBJEXT
62           and BUILD_EXEEXT
63         Note: automatic setting of the BUILD variables is not yet working
64         set CPPFLAGS and BUILD_CPPFLAGS (but don't use yet) - should be used at
65           compile-time but not at link-time
66         [LINK]: use for linking executables only
67         make different versions for Windows and non-Windows
68         [LINKLIB]: new variable, copy of UNIX-style LINK, used for linking
69           libraries
70         [LINK_FOR_BUILD]: new variable
71         [OBJEXT]: use throughout
72         [EXEEXT]: use throughout
73         <winshared>: new target
74         <wininstall>: new target
75         <dftables.o>: use native compiler
76         <dftables>: use native linker
77         <install>: handle Windows platform correctly
78         <clean>: ditto
79         <check>: ditto
80         copy DLL to top builddir before testing
81    
82       As part of these changes, -no-undefined was removed again. This was reported
83       to give trouble on HP-UX 11.0, so getting rid of it seems like a good idea
84       in any case.
85    
86    3. Some tidies to get rid of compiler warnings:
87    
88       . In the match_data structure, match_limit was an unsigned long int, whereas
89         match_call_count was an int. I've made them both unsigned long ints.
90    
91       . In pcretest the fact that a const uschar * doesn't automatically cast to
92         a void * provoked a warning.
93    
94       . Turning on some more compiler warnings threw up some "shadow" variables
95         and a few more missing casts.
96    
97    4. If PCRE was complied with UTF-8 support, but called without the PCRE_UTF8
98       option, a class that contained a single character with a value between 128
99       and 255 (e.g. /[\xFF]/) caused PCRE to crash.
100    
101    5. If PCRE was compiled with UTF-8 support, but called without the PCRE_UTF8
102       option, a class that contained several characters, but with at least one
103       whose value was between 128 and 255 caused PCRE to crash.
104    
105    
106    Version 4.1 12-Mar-03
107    ---------------------
108    
109    1. Compiling with gcc -pedantic found a couple of places where casts were
110    needed, and a string in dftables.c that was longer than standard compilers are
111    required to support.
112    
113    2. Compiling with Sun's compiler found a few more places where the code could
114    be tidied up in order to avoid warnings.
115    
116    3. The variables for cross-compiling were called HOST_CC and HOST_CFLAGS; the
117    first of these names is deprecated in the latest Autoconf in favour of the name
118    CC_FOR_BUILD, because "host" is typically used to mean the system on which the
119    compiled code will be run. I can't find a reference for HOST_CFLAGS, but by
120    analogy I have changed it to CFLAGS_FOR_BUILD.
121    
122    4. Added -no-undefined to the linking command in the Makefile, because this is
123    apparently helpful for Windows. To make it work, also added "-L. -lpcre" to the
124    linking step for the pcreposix library.
125    
126    5. PCRE was failing to diagnose the case of two named groups with the same
127    name.
128    
129    6. A problem with one of PCRE's optimizations was discovered. PCRE remembers a
130    literal character that is needed in the subject for a match, and scans along to
131    ensure that it is present before embarking on the full matching process. This
132    saves time in cases of nested unlimited repeats that are never going to match.
133    Problem: the scan can take a lot of time if the subject is very long (e.g.
134    megabytes), thus penalizing straightforward matches. It is now done only if the
135    amount of subject to be scanned is less than 1000 bytes.
136    
137    7. A lesser problem with the same optimization is that it was recording the
138    first character of an anchored pattern as "needed", thus provoking a search
139    right along the subject, even when the first match of the pattern was going to
140    fail. The "needed" character is now not set for anchored patterns, unless it
141    follows something in the pattern that is of non-fixed length. Thus, it still
142    fulfils its original purpose of finding quick non-matches in cases of nested
143    unlimited repeats, but isn't used for simple anchored patterns such as /^abc/.
144    
145    
146    Version 4.0 17-Feb-03
147    ---------------------
148    
149  1. If a comment in an extended regex that started immediately after a meta-item  1. If a comment in an extended regex that started immediately after a meta-item
150  extended to the end of string, PCRE compiled incorrect data. This could lead to  extended to the end of string, PCRE compiled incorrect data. This could lead to

Legend:
Removed from v.63  
changed lines
  Added in v.69

  ViewVC Help
Powered by ViewVC 1.1.5