diff options
author | ph10 <ph10@2f5784b3-3f2a-0410-8824-cb99058d5e15> | 2016-06-17 17:28:14 +0000 |
---|---|---|
committer | ph10 <ph10@2f5784b3-3f2a-0410-8824-cb99058d5e15> | 2016-06-17 17:28:14 +0000 |
commit | 664df44c7eb62edbce95ab6dbdedcba7f07fed02 (patch) | |
tree | 189645a8ae23bfdcdeff61095b2ec5a1fa0bb2a4 | |
parent | 1005d5bd381e441e9afb9ada4cb1006cd666073b (diff) | |
download | pcre-664df44c7eb62edbce95ab6dbdedcba7f07fed02.tar.gz |
Fix bad interaction between -o and -M in pcregrep.
git-svn-id: svn://vcs.exim.org/pcre/code/trunk@1658 2f5784b3-3f2a-0410-8824-cb99058d5e15
-rw-r--r-- | ChangeLog | 7 | ||||
-rw-r--r-- | configure.ac | 6 | ||||
-rw-r--r-- | pcregrep.c | 6 |
3 files changed, 16 insertions, 3 deletions
@@ -4,6 +4,13 @@ ChangeLog for PCRE Note that the PCRE 8.xx series (PCRE1) is now in a bugfix-only state. All development is happening in the PCRE2 10.xx series. +Version 8.40 17-June-2016 +------------------------- + +1. Using -o with -M in pcregrep could cause unnecessary repeated output when + the match extended over a line boundary. + + Version 8.39 14-June-2016 ------------------------- diff --git a/configure.ac b/configure.ac index 3cefaf1..ebec5e8 100644 --- a/configure.ac +++ b/configure.ac @@ -9,9 +9,9 @@ dnl The PCRE_PRERELEASE feature is for identifying release candidates. It might dnl be defined as -RC2, for example. For real releases, it should be empty. m4_define(pcre_major, [8]) -m4_define(pcre_minor, [39]) -m4_define(pcre_prerelease, []) -m4_define(pcre_date, [2016-06-14]) +m4_define(pcre_minor, [40]) +m4_define(pcre_prerelease, [-RC1]) +m4_define(pcre_date, [2016-06-17]) # NOTE: The CMakeLists.txt file searches for the above variables in the first # 50 lines of this file. Please update that if the variables above are moved. @@ -1803,6 +1803,12 @@ while (ptr < endptr) match = FALSE; if (line_buffered) fflush(stdout); rc = 0; /* Had some success */ + + /* If the current match ended past the end of the line (only possible + in multiline mode), we are done with this line. */ + + if ((unsigned int)offsets[1] > linelength) goto END_ONE_MATCH; + startoffset = offsets[1]; /* Restart after the match */ if (startoffset <= oldstartoffset) { |