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

Diff of /code/trunk/ChangeLog

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

revision 1501 by zherczeg, Wed Sep 3 10:13:33 2014 UTC revision 1502 by ph10, Mon Sep 15 13:56:18 2014 UTC
# Line 1  Line 1 
1  ChangeLog for PCRE  ChangeLog for PCRE
2  ------------------  ------------------
3    
4  Version 8.36 xx-xxx-2014  Version 8.36 15-September-2014
5  ------------------------  ------------------------------
6    
7  1.  Got rid of some compiler warnings in the C++ modules that were shown up by  1.  Got rid of some compiler warnings in the C++ modules that were shown up by
8      -Wmissing-field-initializers and -Wunused-parameter.      -Wmissing-field-initializers and -Wunused-parameter.
9    
10  2.  The tests for quantifiers being too big (greater than 65535) were being  2.  The tests for quantifiers being too big (greater than 65535) were being
11      applied after reading the number, and stupidly assuming that integer      applied after reading the number, and stupidly assuming that integer
12      overflow would give a negative number. The tests are now applied as the      overflow would give a negative number. The tests are now applied as the
13      numbers are read.      numbers are read.
14    
15  3.  Tidy code in pcre_exec.c where two branches that used to be different are  3.  Tidy code in pcre_exec.c where two branches that used to be different are
16      now the same.      now the same.
17    
18  4.  The JIT compiler did not generate match limit checks for certain  4.  The JIT compiler did not generate match limit checks for certain
19      bracketed expressions with quantifiers. This may lead to exponential      bracketed expressions with quantifiers. This may lead to exponential
# Line 22  Version 8.36 xx-xxx-2014 Line 22  Version 8.36 xx-xxx-2014
22    
23  5.  Fixed an issue, which occures when nested alternatives are optimized  5.  Fixed an issue, which occures when nested alternatives are optimized
24      with table jumps.      with table jumps.
25    
26  6.  Inserted two casts and changed some ints to size_t in the light of some  6.  Inserted two casts and changed some ints to size_t in the light of some
27      reported 64-bit compiler warnings (Bugzilla 1477).      reported 64-bit compiler warnings (Bugzilla 1477).
28    
29  7.  Fixed a bug concerned with zero-minimum possessive groups that could match  7.  Fixed a bug concerned with zero-minimum possessive groups that could match
30      an empty string, which sometimes were behaving incorrectly in the      an empty string, which sometimes were behaving incorrectly in the
31      interpreter (though correctly in the JIT matcher). This pcretest input is      interpreter (though correctly in the JIT matcher). This pcretest input is
32      an example:      an example:
33    
34        '\A(?:[^"]++|"(?:[^"]*+|"")*+")++'        '\A(?:[^"]++|"(?:[^"]*+|"")*+")++'
35        NON QUOTED "QUOT""ED" AFTER "NOT MATCHED        NON QUOTED "QUOT""ED" AFTER "NOT MATCHED
36    
37      the interpreter was reporting a match of 'NON QUOTED ' only, whereas the      the interpreter was reporting a match of 'NON QUOTED ' only, whereas the
38      JIT matcher and Perl both matched 'NON QUOTED "QUOT""ED" AFTER '. The test      JIT matcher and Perl both matched 'NON QUOTED "QUOT""ED" AFTER '. The test
39      for an empty string was breaking the inner loop and carrying on at a lower      for an empty string was breaking the inner loop and carrying on at a lower
40      level, when possessive repeated groups should always return to a higher      level, when possessive repeated groups should always return to a higher
41      level as they have no backtrack points in them. The empty string test now      level as they have no backtrack points in them. The empty string test now
42      occurs at the outer level.      occurs at the outer level.
43    
44  8.  Fixed a bug that was incorrectly auto-possessifying \w+ in the pattern  8.  Fixed a bug that was incorrectly auto-possessifying \w+ in the pattern
45      ^\w+(?>\s*)(?<=\w) which caused it not to match "test test".      ^\w+(?>\s*)(?<=\w) which caused it not to match "test test".
46    
47  9.  Give a compile-time error for \o{} (as Perl does) and for \x{} (which Perl  9.  Give a compile-time error for \o{} (as Perl does) and for \x{} (which Perl
48      doesn't).      doesn't).
49    
50  10. Change 8.34/15 introduced a bug that caused the amount of memory needed  10. Change 8.34/15 introduced a bug that caused the amount of memory needed
51      to hold a pattern to be incorrectly computed (too small) when there were      to hold a pattern to be incorrectly computed (too small) when there were
52      named back references to duplicated names. This could cause "internal      named back references to duplicated names. This could cause "internal
53      error: code overflow" or "double free or corruption" or other memory      error: code overflow" or "double free or corruption" or other memory
54      handling errors.      handling errors.
55    
56  11. When named subpatterns had the same prefixes, back references could be  11. When named subpatterns had the same prefixes, back references could be
57      confused. For example, in this pattern:      confused. For example, in this pattern:
58    
59        /(?P<Name>a)?(?P<Name2>b)?(?(<Name>)c|d)*l/        /(?P<Name>a)?(?P<Name2>b)?(?(<Name>)c|d)*l/
60    
61      the reference to 'Name' was incorrectly treated as a reference to a      the reference to 'Name' was incorrectly treated as a reference to a
62      duplicate name.      duplicate name.
63    
64  12. A pattern such as /^s?c/mi8 where the optional character has more than  12. A pattern such as /^s?c/mi8 where the optional character has more than
65      one "other case" was incorrectly compiled such that it would only try to      one "other case" was incorrectly compiled such that it would only try to
66      match starting at "c".      match starting at "c".
67    
68  13. When a pattern starting with \s was studied, VT was not included in the  13. When a pattern starting with \s was studied, VT was not included in the
69      list of possible starting characters; this should have been part of the      list of possible starting characters; this should have been part of the
70      8.34/18 patch.      8.34/18 patch.
71    
72  14. If a character class started [\Qx]... where x is any character, the class  14. If a character class started [\Qx]... where x is any character, the class
73      was incorrectly terminated at the ].      was incorrectly terminated at the ].
74    
75  15. If a pattern that started with a caseless match for a character with more  15. If a pattern that started with a caseless match for a character with more
76      than one "other case" was studied, PCRE did not set up the starting code      than one "other case" was studied, PCRE did not set up the starting code
77      unit bit map for the list of possible characters. Now it does. This is an      unit bit map for the list of possible characters. Now it does. This is an
78      optimization improvement, not a bug fix.      optimization improvement, not a bug fix.
79    
80  16. The Unicode data tables have been updated to Unicode 7.0.0.  16. The Unicode data tables have been updated to Unicode 7.0.0.
# Line 82  Version 8.36 xx-xxx-2014 Line 82  Version 8.36 xx-xxx-2014
82  17. Fixed a number of memory leaks in pcregrep.  17. Fixed a number of memory leaks in pcregrep.
83    
84  18. Avoid a compiler warning (from some compilers) for a function call with  18. Avoid a compiler warning (from some compilers) for a function call with
85      a cast that removes "const" from an lvalue by using an intermediate      a cast that removes "const" from an lvalue by using an intermediate
86      variable (to which the compiler does not object).      variable (to which the compiler does not object).
87    
88  19. Incorrect code was compiled if a group that contained an internal recursive  19. Incorrect code was compiled if a group that contained an internal recursive
89      back reference was optional (had quantifier with a minimum of zero). This      back reference was optional (had quantifier with a minimum of zero). This
90      example compiled incorrect code: /(((a\2)|(a*)\g<-1>))*/ and other examples      example compiled incorrect code: /(((a\2)|(a*)\g<-1>))*/ and other examples
91      caused segmentation faults because of stack overflows at compile time.      caused segmentation faults because of stack overflows at compile time.
92    
93  20. A pattern such as /((?(R)a|(?1)))+/, which contains a recursion within a  20. A pattern such as /((?(R)a|(?1)))+/, which contains a recursion within a
94      group that is quantified with an indefinite repeat, caused a compile-time      group that is quantified with an indefinite repeat, caused a compile-time
95      loop which used up all the system stack and provoked a segmentation fault.      loop which used up all the system stack and provoked a segmentation fault.
96      This was not the same bug as 19 above.      This was not the same bug as 19 above.

Legend:
Removed from v.1501  
changed lines
  Added in v.1502

  ViewVC Help
Powered by ViewVC 1.1.5