diff options
author | Yaakov Selkowitz <yselkowi@redhat.com> | 2016-09-12 16:13:34 -0500 |
---|---|---|
committer | Yaakov Selkowitz <yselkowi@redhat.com> | 2016-09-12 16:13:34 -0500 |
commit | 1aceedd9968ff6476bf60de6d1137a4754476954 (patch) | |
tree | a65a9441fb6766c09938caf6ba6a9699d85a29fa | |
parent | 1e484580e8989ee76f3f273281b3520bdf873b08 (diff) | |
download | cygwin-pcre-1aceedd9968ff6476bf60de6d1137a4754476954.tar.gz cygwin-pcre-1aceedd9968ff6476bf60de6d1137a4754476954.tar.xz cygwin-pcre-1aceedd9968ff6476bf60de6d1137a4754476954.zip |
cygwin-pcre 8.39
20 files changed, 183 insertions, 1499 deletions
@@ -1 +1,2 @@ /pcre-8.38.tar.bz2 +/pcre-8.39.tar.bz2 diff --git a/cygwin-pcre.spec b/cygwin-pcre.spec index 250b3b2..199db2a 100644 --- a/cygwin-pcre.spec +++ b/cygwin-pcre.spec @@ -1,7 +1,7 @@ %{?cygwin_package_header} Name: cygwin-pcre -Version: 8.38 +Version: 8.39 Release: 1%{?dist} Summary: Cygwin pcre library @@ -15,61 +15,10 @@ Source0: ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-%{version}.t Patch0: pcre-8.21-multilib.patch # Refused by upstream, bug #675477 #Patch1: pcre-8.32-refused_spelling_terminated.patch -# Fix compiling comments with auto-callouts, upstream bug #1725, -# fixed in upstream after 8.38 -Patch2: pcre-8.38-Fix-auto-callout-comment-bug.patch -# Fix compiling expressions with negated classes in UCP mode, -# upstream bug #1732, fixed in upstream after 8.38 -Patch3: pcre-8.38-Fix-negated-POSIX-class-within-negated-overall-class.patch -# Fix compiling expressions with an isolated \E between an item and its -# qualifier with auto-callouts, upstream bug #1724, -# fixed in upstream after 8.38 -Patch4: pcre-8.38-Fix-bug-for-isolated-E-between-an-item-and-its-quali.patch -# Fix crash in regexec() if REG_STARTEND option is set and pmatch argument is -# NULL, upstream bug #1727, fixed in upstream after 8.38 -Patch5: pcre-8.38-Give-error-for-regexec-with-pmatch-NULL-and-REG_STAR.patch -# Fix a stack overflow when formatting a 32-bit integer in pcregrep tool, -# upstream bug #1728, fixed in upstream after 8.38 -Patch6: pcre-8.38-Allow-for-up-to-32-bit-numbers-in-the-ordin-function.patch -# Fix compiling expressions with an empty \Q\E sequence between an item and -# its qualifier with auto-callouts, upstream bug #1735, -# fixed in upstream after 8.38 -Patch7: pcre-8.38-Fix-Q-E-before-qualifier-bug-when-auto-callouts-are-.patch -# Fix compiling expressions with global extended modifier that is disabled by -# local no-extended option at the start of the expression just after -# a whitespace, in upstream after 8.38 -Patch8: pcre-8.38-Fix-x-bug-when-pattern-starts-with-white-space-and-x.patch -# Fix possible crash in pcre_copy_named_substring() if a named substring has -# number greater than the space in the ovector, upstream bug #1741, -# in fixed in upstream after 8.38 -Patch9: pcre-8.38-Fix-copy-named-substring-bug.patch -# Fix a buffer overflow when compiling an expression with named groups with -# a group that reset capture numbers, upstream bug #1742, -# fixed in upstream after 8.38 -Patch10: pcre-8.38-Fix-by-hacking-another-length-computation-issue.patch -# Fix a crash in pcre_get_substring_list() if the use of \K caused the start -# of the match to be earlier than the end, upstream bug #1744, -# fixed in upstream after 8.38 -Patch11: pcre-8.38-Fix-get_substring_list-bug-when-K-is-used-in-an-asse.patch -# Fix pcretest for expressions with a callout inside a look-behind assertion, -# upstream bug #1783, fixed in upstream after 8.38 -Patch12: pcre-8.38-Fix-pcretest-bad-behaviour-for-callout-in-lookbehind.patch -# Fix CVE-2016-3191 (workspace overflow for (*ACCEPT) with deeply nested -# parentheses), upstream bug #1791, fixed in upstream after 8.38 -Patch13: pcre-8.38-Fix-workspace-overflow-for-ACCEPT-with-deeply-nested.patch -# Fix CVE-2016-1283 (heap buffer overflow in handling of nested duplicate named -# groups with a nested back reference), bug #1295386, upstream bug #1767, -# fixed in upstream after 8.38 -Patch14: pcre-8.38-Yet-another-duplicate-name-bugfix-by-overestimating-.patch -# Fix a heap buffer overflow in pcretest causing infinite loop when matching -# globally with an ovector less than 2, bug #1312786, upstream bug #1777, -# fixed in upstream after 8.38 -Patch15: pcre-8.38-Fix-pcretest-loop-for-global-matching-with-an-ovecto.patch -# Fix a non-diagnosis of missing assection after (?(?C) that could corrupt -# process stack, upstream bug #1780, fixed in upstream after 8.38 -Patch16: pcre-8.38-Fix-non-diagnosis-of-missing-assertion-after-C.patch -# Fix a typo in pcre_study() -Patch17: pcre-8.38-Fix-typo-in-pcre_study.patch + +# Cygwin-specific +Patch100: pcre-8.39-cygwin-jit.patch + BuildRequires: autoconf, automake, libtool BuildRequires: cygwin32-filesystem @@ -108,22 +57,7 @@ Cross compiled PCRE library for use with Cygwin x86_64 toolchain. %setup -q -n pcre-%{version} %patch0 -p1 #patch1 -p1 -%patch2 -p1 -%patch3 -p1 -%patch4 -p1 -%patch5 -p1 -%patch6 -p1 -%patch7 -p1 -%patch8 -p1 -%patch9 -p1 -%patch10 -p1 -%patch11 -p1 -%patch12 -p1 -%patch13 -p1 -%patch14 -p1 -%patch15 -p1 -%patch16 -p1 -%patch17 -p1 +%patch100 -p2 mkdir -p m4 autoreconf -fiv @@ -137,6 +71,7 @@ done %build %cygwin_configure \ --enable-shared --disable-static \ + --enable-jit \ --enable-pcre16 --enable-pcre32 \ --enable-utf8 --enable-unicode-properties \ --enable-newline-is-anycrlf @@ -201,6 +136,10 @@ rm -rf $RPM_BUILD_ROOT%{cygwin64_mandir} %changelog +* Mon Sep 12 2016 Yaakov Selkowitz <yselkowi@redhat.com> - 8.39-1 +- new version +- enable JIT + * Wed Mar 30 2016 Yaakov Selkowitz <yselkowi@redhat.com> - 8.38-1 - new version with latest Fedora patchset diff --git a/pcre-8.38-Allow-for-up-to-32-bit-numbers-in-the-ordin-function.patch b/pcre-8.38-Allow-for-up-to-32-bit-numbers-in-the-ordin-function.patch deleted file mode 100644 index 6926f76..0000000 --- a/pcre-8.38-Allow-for-up-to-32-bit-numbers-in-the-ordin-function.patch +++ /dev/null @@ -1,29 +0,0 @@ -From e347b40d5bb12f7ef1e632aa649571a107be7d8a Mon Sep 17 00:00:00 2001 -From: ph10 <ph10@2f5784b3-3f2a-0410-8824-cb99058d5e15> -Date: Sun, 29 Nov 2015 17:46:23 +0000 -Subject: [PATCH 4/5] Allow for up to 32-bit numbers in the ordin() function in - pcregrep. -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -git-svn-id: svn://vcs.exim.org/pcre/code/trunk@1615 2f5784b3-3f2a-0410-8824-cb99058d5e15 - -Petr Písař: Ported to 8.38. - -diff --git a/pcregrep.c b/pcregrep.c -index 64986b0..cd53c64 100644 ---- a/pcregrep.c -+++ b/pcregrep.c -@@ -2437,7 +2437,7 @@ return options; - static char * - ordin(int n) - { --static char buffer[8]; -+static char buffer[14]; - char *p = buffer; - sprintf(p, "%d", n); - while (*p != 0) p++; --- -2.4.3 - diff --git a/pcre-8.38-Fix-Q-E-before-qualifier-bug-when-auto-callouts-are-.patch b/pcre-8.38-Fix-Q-E-before-qualifier-bug-when-auto-callouts-are-.patch deleted file mode 100644 index d001710..0000000 --- a/pcre-8.38-Fix-Q-E-before-qualifier-bug-when-auto-callouts-are-.patch +++ /dev/null @@ -1,122 +0,0 @@ -From e78ad4264b16988b826bd2939a1781c1165a92d9 Mon Sep 17 00:00:00 2001 -From: ph10 <ph10@2f5784b3-3f2a-0410-8824-cb99058d5e15> -Date: Mon, 30 Nov 2015 17:44:45 +0000 -Subject: [PATCH 5/5] Fix \Q\E before qualifier bug when auto callouts are - enabled. -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -git-svn-id: svn://vcs.exim.org/pcre/code/trunk@1616 2f5784b3-3f2a-0410-8824-cb99058d5e15 - -Petr Písař: Ported to 8.38. - -diff --git a/pcre_compile.c b/pcre_compile.c -index 5786cd3..beed46b 100644 ---- a/pcre_compile.c -+++ b/pcre_compile.c -@@ -4671,17 +4671,27 @@ for (;; ptr++) - } - goto NORMAL_CHAR; - } -+ -+ /* Check for the start of a \Q...\E sequence. We must do this here rather -+ than later in case it is immediately followed by \E, which turns it into a -+ "do nothing" sequence. */ -+ -+ if (c == CHAR_BACKSLASH && ptr[1] == CHAR_Q) -+ { -+ inescq = TRUE; -+ ptr++; -+ continue; -+ } - } - -- /* In extended mode, skip white space and comments. We need a loop in order -- to check for more white space and more comments after a comment. */ -+ /* In extended mode, skip white space and comments. */ - - if ((options & PCRE_EXTENDED) != 0) - { -- for (;;) -+ const pcre_uchar *wscptr = ptr; -+ while (MAX_255(c) && (cd->ctypes[c] & ctype_space) != 0) c = *(++ptr); -+ if (c == CHAR_NUMBER_SIGN) - { -- while (MAX_255(c) && (cd->ctypes[c] & ctype_space) != 0) c = *(++ptr); -- if (c != CHAR_NUMBER_SIGN) break; - ptr++; - while (*ptr != CHAR_NULL) - { -@@ -4695,7 +4705,15 @@ for (;; ptr++) - if (utf) FORWARDCHAR(ptr); - #endif - } -- c = *ptr; /* Either NULL or the char after a newline */ -+ } -+ -+ /* If we skipped any characters, restart the loop. Otherwise, we didn't see -+ a comment. */ -+ -+ if (ptr > wscptr) -+ { -+ ptr--; -+ continue; - } - } - -@@ -7900,16 +7918,6 @@ for (;; ptr++) - c = ec; - else - { -- if (escape == ESC_Q) /* Handle start of quoted string */ -- { -- if (ptr[1] == CHAR_BACKSLASH && ptr[2] == CHAR_E) -- ptr += 2; /* avoid empty string */ -- else inescq = TRUE; -- continue; -- } -- -- if (escape == ESC_E) continue; /* Perl ignores an orphan \E */ -- - /* For metasequences that actually match a character, we disable the - setting of a first character if it hasn't already been set. */ - -diff --git a/testdata/testinput2 b/testdata/testinput2 -index e8ca4fe..3a1134f 100644 ---- a/testdata/testinput2 -+++ b/testdata/testinput2 -@@ -4227,4 +4227,6 @@ backtracking verbs. --/ - - /(A*)\E+/CBZ - -+/()\Q\E*]/BCZ -+ - /-- End of testinput2 --/ -diff --git a/testdata/testoutput2 b/testdata/testoutput2 -index 09756b8..ac33cc4 100644 ---- a/testdata/testoutput2 -+++ b/testdata/testoutput2 -@@ -14624,4 +14624,19 @@ No match - End - ------------------------------------------------------------------ - -+/()\Q\E*]/BCZ -+------------------------------------------------------------------ -+ Bra -+ Callout 255 0 7 -+ Brazero -+ SCBra 1 -+ Callout 255 1 0 -+ KetRmax -+ Callout 255 7 1 -+ ] -+ Callout 255 8 0 -+ Ket -+ End -+------------------------------------------------------------------ -+ - /-- End of testinput2 --/ --- -2.4.3 - diff --git a/pcre-8.38-Fix-auto-callout-comment-bug.patch b/pcre-8.38-Fix-auto-callout-comment-bug.patch deleted file mode 100644 index 2a8f173..0000000 --- a/pcre-8.38-Fix-auto-callout-comment-bug.patch +++ /dev/null @@ -1,169 +0,0 @@ -From 3c80e02cd464ea049e117b423fd48fab294c51a9 Mon Sep 17 00:00:00 2001 -From: ph10 <ph10@2f5784b3-3f2a-0410-8824-cb99058d5e15> -Date: Thu, 26 Nov 2015 20:29:13 +0000 -Subject: [PATCH] Fix auto-callout (?# comment bug. -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -git-svn-id: svn://vcs.exim.org/pcre/code/trunk@1611 2f5784b3-3f2a-0410-8824-cb99058d5e15 - -Petr Pisar: Ported to 8.38. - -diff --git a/pcre_compile.c b/pcre_compile.c -index 4d3b313..3360a8b 100644 ---- a/pcre_compile.c -+++ b/pcre_compile.c -@@ -4699,6 +4699,23 @@ for (;; ptr++) - } - } - -+ /* Skip over (?# comments. We need to do this here because we want to know if -+ the next thing is a quantifier, and these comments may come between an item -+ and its quantifier. */ -+ -+ if (c == CHAR_LEFT_PARENTHESIS && ptr[1] == CHAR_QUESTION_MARK && -+ ptr[2] == CHAR_NUMBER_SIGN) -+ { -+ ptr += 3; -+ while (*ptr != CHAR_NULL && *ptr != CHAR_RIGHT_PARENTHESIS) ptr++; -+ if (*ptr == CHAR_NULL) -+ { -+ *errorcodeptr = ERR18; -+ goto FAILED; -+ } -+ continue; -+ } -+ - /* See if the next thing is a quantifier. */ - - is_quantifier = -@@ -6529,21 +6546,6 @@ for (;; ptr++) - case CHAR_LEFT_PARENTHESIS: - ptr++; - -- /* First deal with comments. Putting this code right at the start ensures -- that comments have no bad side effects. */ -- -- if (ptr[0] == CHAR_QUESTION_MARK && ptr[1] == CHAR_NUMBER_SIGN) -- { -- ptr += 2; -- while (*ptr != CHAR_NULL && *ptr != CHAR_RIGHT_PARENTHESIS) ptr++; -- if (*ptr == CHAR_NULL) -- { -- *errorcodeptr = ERR18; -- goto FAILED; -- } -- continue; -- } -- - /* Now deal with various "verbs" that can be introduced by '*'. */ - - if (ptr[0] == CHAR_ASTERISK && (ptr[1] == ':' -diff --git a/testdata/testinput2 b/testdata/testinput2 -index e2e520f..92e3359 100644 ---- a/testdata/testinput2 -+++ b/testdata/testinput2 -@@ -4217,4 +4217,12 @@ backtracking verbs. --/ - - /a[[:punct:]b]/BZ - -+/L(?#(|++<!(2)?/BZ -+ -+/L(?#(|++<!(2)?/BOZ -+ -+/L(?#(|++<!(2)?/BCZ -+ -+/L(?#(|++<!(2)?/BCOZ -+ - /-- End of testinput2 --/ -diff --git a/testdata/testinput7 b/testdata/testinput7 -index e411a4b..00b9738 100644 ---- a/testdata/testinput7 -+++ b/testdata/testinput7 -@@ -853,4 +853,8 @@ of case for anything other than the ASCII letters. --/ - - /a[b[:punct:]]/8WBZ - -+/L(?#(|++<!(2)?/B8COZ -+ -+/L(?#(|++<!(2)?/B8WCZ -+ - /-- End of testinput7 --/ -diff --git a/testdata/testoutput2 b/testdata/testoutput2 -index 85c565d..2cf7a90 100644 ---- a/testdata/testoutput2 -+++ b/testdata/testoutput2 -@@ -14574,4 +14574,40 @@ No match - End - ------------------------------------------------------------------ - -+/L(?#(|++<!(2)?/BZ -+------------------------------------------------------------------ -+ Bra -+ L?+ -+ Ket -+ End -+------------------------------------------------------------------ -+ -+/L(?#(|++<!(2)?/BOZ -+------------------------------------------------------------------ -+ Bra -+ L? -+ Ket -+ End -+------------------------------------------------------------------ -+ -+/L(?#(|++<!(2)?/BCZ -+------------------------------------------------------------------ -+ Bra -+ Callout 255 0 14 -+ L?+ -+ Callout 255 14 0 -+ Ket -+ End -+------------------------------------------------------------------ -+ -+/L(?#(|++<!(2)?/BCOZ -+------------------------------------------------------------------ -+ Bra -+ Callout 255 0 14 -+ L? -+ Callout 255 14 0 -+ Ket -+ End -+------------------------------------------------------------------ -+ - /-- End of testinput2 --/ -diff --git a/testdata/testoutput7 b/testdata/testoutput7 -index cc9ebdd..fdfff64 100644 ---- a/testdata/testoutput7 -+++ b/testdata/testoutput7 -@@ -2348,4 +2348,24 @@ No match - End - ------------------------------------------------------------------ - -+/L(?#(|++<!(2)?/B8COZ -+------------------------------------------------------------------ -+ Bra -+ Callout 255 0 14 -+ L? -+ Callout 255 14 0 -+ Ket -+ End -+------------------------------------------------------------------ -+ -+/L(?#(|++<!(2)?/B8WCZ -+------------------------------------------------------------------ -+ Bra -+ Callout 255 0 14 -+ L?+ -+ Callout 255 14 0 -+ Ket -+ End -+------------------------------------------------------------------ -+ - /-- End of testinput7 --/ --- -2.4.3 - diff --git a/pcre-8.38-Fix-bug-for-isolated-E-between-an-item-and-its-quali.patch b/pcre-8.38-Fix-bug-for-isolated-E-between-an-item-and-its-quali.patch deleted file mode 100644 index 81ce581..0000000 --- a/pcre-8.38-Fix-bug-for-isolated-E-between-an-item-and-its-quali.patch +++ /dev/null @@ -1,84 +0,0 @@ -From bfc1dfa660c24dc7a75108d934290e50d7db2719 Mon Sep 17 00:00:00 2001 -From: ph10 <ph10@2f5784b3-3f2a-0410-8824-cb99058d5e15> -Date: Fri, 27 Nov 2015 17:41:04 +0000 -Subject: [PATCH 2/5] Fix bug for isolated \E between an item and its qualifier - when auto callout is set. -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -git-svn-id: svn://vcs.exim.org/pcre/code/trunk@1613 2f5784b3-3f2a-0410-8824-cb99058d5e15 - -Petr Písař: Ported to 8.38. - -diff --git a/pcre_compile.c b/pcre_compile.c -index 3670f1e..5786cd3 100644 ---- a/pcre_compile.c -+++ b/pcre_compile.c -@@ -4645,9 +4645,10 @@ for (;; ptr++) - goto FAILED; - } - -- /* If in \Q...\E, check for the end; if not, we have a literal */ -+ /* If in \Q...\E, check for the end; if not, we have a literal. Otherwise an -+ isolated \E is ignored. */ - -- if (inescq && c != CHAR_NULL) -+ if (c != CHAR_NULL) - { - if (c == CHAR_BACKSLASH && ptr[1] == CHAR_E) - { -@@ -4655,7 +4656,7 @@ for (;; ptr++) - ptr++; - continue; - } -- else -+ else if (inescq) - { - if (previous_callout != NULL) - { -@@ -4670,7 +4671,6 @@ for (;; ptr++) - } - goto NORMAL_CHAR; - } -- /* Control does not reach here. */ - } - - /* In extended mode, skip white space and comments. We need a loop in order -diff --git a/testdata/testinput2 b/testdata/testinput2 -index 92e3359..e8ca4fe 100644 ---- a/testdata/testinput2 -+++ b/testdata/testinput2 -@@ -4225,4 +4225,6 @@ backtracking verbs. --/ - - /L(?#(|++<!(2)?/BCOZ - -+/(A*)\E+/CBZ -+ - /-- End of testinput2 --/ -diff --git a/testdata/testoutput2 b/testdata/testoutput2 -index 2cf7a90..09756b8 100644 ---- a/testdata/testoutput2 -+++ b/testdata/testoutput2 -@@ -14610,4 +14610,18 @@ No match - End - ------------------------------------------------------------------ - -+/(A*)\E+/CBZ -+------------------------------------------------------------------ -+ Bra -+ Callout 255 0 7 -+ SCBra 1 -+ Callout 255 1 2 -+ A* -+ Callout 255 3 0 -+ KetRmax -+ Callout 255 7 0 -+ Ket -+ End -+------------------------------------------------------------------ -+ - /-- End of testinput2 --/ --- -2.4.3 - diff --git a/pcre-8.38-Fix-by-hacking-another-length-computation-issue.patch b/pcre-8.38-Fix-by-hacking-another-length-computation-issue.patch deleted file mode 100644 index 14ca191..0000000 --- a/pcre-8.38-Fix-by-hacking-another-length-computation-issue.patch +++ /dev/null @@ -1,67 +0,0 @@ -From 40363ebc19baeab160abaaa55dc84322a89ac35a Mon Sep 17 00:00:00 2001 -From: ph10 <ph10@2f5784b3-3f2a-0410-8824-cb99058d5e15> -Date: Sat, 5 Dec 2015 16:58:46 +0000 -Subject: [PATCH] Fix (by hacking) another length computation issue. -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -git-svn-id: svn://vcs.exim.org/pcre/code/trunk@1619 2f5784b3-3f2a-0410-8824-cb99058d5e15 - -Petr Písař: Ported to 8.38. - -diff --git a/pcre_compile.c b/pcre_compile.c -index 57719b9..087bf2a 100644 ---- a/pcre_compile.c -+++ b/pcre_compile.c -@@ -7280,7 +7280,7 @@ for (;; ptr++) - issue is fixed "properly" in PCRE2. As PCRE1 is now in maintenance - only mode, we finesse the bug by allowing more memory always. */ - -- *lengthptr += 2 + 2*LINK_SIZE; -+ *lengthptr += 4 + 4*LINK_SIZE; - - /* It is even worse than that. The current reference may be to an - existing named group with a different number (so apparently not -diff --git a/testdata/testoutput11-16 b/testdata/testoutput11-16 -index 9a0a12d..280692e 100644 ---- a/testdata/testoutput11-16 -+++ b/testdata/testoutput11-16 -@@ -231,7 +231,7 @@ Memory allocation (code space): 73 - ------------------------------------------------------------------ - - /(?P<a>a)...(?P=a)bbb(?P>a)d/BM --Memory allocation (code space): 77 -+Memory allocation (code space): 93 - ------------------------------------------------------------------ - 0 24 Bra - 2 5 CBra 1 -diff --git a/testdata/testoutput11-32 b/testdata/testoutput11-32 -index 57e5da0..cdbda74 100644 ---- a/testdata/testoutput11-32 -+++ b/testdata/testoutput11-32 -@@ -231,7 +231,7 @@ Memory allocation (code space): 155 - ------------------------------------------------------------------ - - /(?P<a>a)...(?P=a)bbb(?P>a)d/BM --Memory allocation (code space): 157 -+Memory allocation (code space): 189 - ------------------------------------------------------------------ - 0 24 Bra - 2 5 CBra 1 -diff --git a/testdata/testoutput11-8 b/testdata/testoutput11-8 -index 748548a..cb37896 100644 ---- a/testdata/testoutput11-8 -+++ b/testdata/testoutput11-8 -@@ -231,7 +231,7 @@ Memory allocation (code space): 45 - ------------------------------------------------------------------ - - /(?P<a>a)...(?P=a)bbb(?P>a)d/BM --Memory allocation (code space): 50 -+Memory allocation (code space): 62 - ------------------------------------------------------------------ - 0 30 Bra - 3 7 CBra 1 --- -2.4.3 - diff --git a/pcre-8.38-Fix-copy-named-substring-bug.patch b/pcre-8.38-Fix-copy-named-substring-bug.patch deleted file mode 100644 index 301344b..0000000 --- a/pcre-8.38-Fix-copy-named-substring-bug.patch +++ /dev/null @@ -1,99 +0,0 @@ -From db1fb68feddc9afe6f8822d099fa9ff25e3ea8e7 Mon Sep 17 00:00:00 2001 -From: ph10 <ph10@2f5784b3-3f2a-0410-8824-cb99058d5e15> -Date: Sat, 5 Dec 2015 16:30:14 +0000 -Subject: [PATCH] Fix copy named substring bug. -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -git-svn-id: svn://vcs.exim.org/pcre/code/trunk@1618 2f5784b3-3f2a-0410-8824-cb99058d5e15 - -Petr Písař: Ported to 8.38. -diff --git a/pcre_get.c b/pcre_get.c -index 8094b34..41eda9c 100644 ---- a/pcre_get.c -+++ b/pcre_get.c -@@ -250,6 +250,7 @@ Arguments: - code the compiled regex - stringname the name of the capturing substring - ovector the vector of matched substrings -+ stringcount number of captured substrings - - Returns: the number of the first that is set, - or the number of the last one if none are set, -@@ -258,13 +259,16 @@ Returns: the number of the first that is set, - - #if defined COMPILE_PCRE8 - static int --get_first_set(const pcre *code, const char *stringname, int *ovector) -+get_first_set(const pcre *code, const char *stringname, int *ovector, -+ int stringcount) - #elif defined COMPILE_PCRE16 - static int --get_first_set(const pcre16 *code, PCRE_SPTR16 stringname, int *ovector) -+get_first_set(const pcre16 *code, PCRE_SPTR16 stringname, int *ovector, -+ int stringcount) - #elif defined COMPILE_PCRE32 - static int --get_first_set(const pcre32 *code, PCRE_SPTR32 stringname, int *ovector) -+get_first_set(const pcre32 *code, PCRE_SPTR32 stringname, int *ovector, -+ int stringcount) - #endif - { - const REAL_PCRE *re = (const REAL_PCRE *)code; -@@ -295,7 +299,7 @@ if (entrysize <= 0) return entrysize; - for (entry = (pcre_uchar *)first; entry <= (pcre_uchar *)last; entry += entrysize) - { - int n = GET2(entry, 0); -- if (ovector[n*2] >= 0) return n; -+ if (n < stringcount && ovector[n*2] >= 0) return n; - } - return GET2(entry, 0); - } -@@ -402,7 +406,7 @@ pcre32_copy_named_substring(const pcre32 *code, PCRE_SPTR32 subject, - PCRE_UCHAR32 *buffer, int size) - #endif - { --int n = get_first_set(code, stringname, ovector); -+int n = get_first_set(code, stringname, ovector, stringcount); - if (n <= 0) return n; - #if defined COMPILE_PCRE8 - return pcre_copy_substring(subject, ovector, stringcount, n, buffer, size); -@@ -619,7 +623,7 @@ pcre32_get_named_substring(const pcre32 *code, PCRE_SPTR32 subject, - PCRE_SPTR32 *stringptr) - #endif - { --int n = get_first_set(code, stringname, ovector); -+int n = get_first_set(code, stringname, ovector, stringcount); - if (n <= 0) return n; - #if defined COMPILE_PCRE8 - return pcre_get_substring(subject, ovector, stringcount, n, stringptr); -diff --git a/testdata/testinput2 b/testdata/testinput2 -index 3a1134f..00ffe32 100644 ---- a/testdata/testinput2 -+++ b/testdata/testinput2 -@@ -4229,4 +4229,7 @@ backtracking verbs. --/ - - /()\Q\E*]/BCZ - -+/(?<A>)(?J:(?<B>)(?<B>))(?<C>)/ -+ \O\CC -+ - /-- End of testinput2 --/ -diff --git a/testdata/testoutput2 b/testdata/testoutput2 -index 6c42897..ffb4466 100644 ---- a/testdata/testoutput2 -+++ b/testdata/testoutput2 -@@ -14639,4 +14639,9 @@ No match - End - ------------------------------------------------------------------ - -+/(?<A>)(?J:(?<B>)(?<B>))(?<C>)/ -+ \O\CC -+Matched, but too many substrings -+copy substring C failed -7 -+ - /-- End of testinput2 --/ --- -2.4.3 - diff --git a/pcre-8.38-Fix-get_substring_list-bug-when-K-is-used-in-an-asse.patch b/pcre-8.38-Fix-get_substring_list-bug-when-K-is-used-in-an-asse.patch deleted file mode 100644 index 4c9ec8a..0000000 --- a/pcre-8.38-Fix-get_substring_list-bug-when-K-is-used-in-an-asse.patch +++ /dev/null @@ -1,67 +0,0 @@ -From 4f47274a2eb10131d88145ad7fd0eed4027a0c51 Mon Sep 17 00:00:00 2001 -From: ph10 <ph10@2f5784b3-3f2a-0410-8824-cb99058d5e15> -Date: Tue, 8 Dec 2015 11:06:40 +0000 -Subject: [PATCH] Fix get_substring_list() bug when \K is used in an assertion. -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -git-svn-id: svn://vcs.exim.org/pcre/code/trunk@1620 2f5784b3-3f2a-0410-8824-cb99058d5e15 - -Petr Písař: ported to 8.38. - -diff --git a/pcre_get.c b/pcre_get.c -index 41eda9c..cdd2abc 100644 ---- a/pcre_get.c -+++ b/pcre_get.c -@@ -461,7 +461,10 @@ pcre_uchar **stringlist; - pcre_uchar *p; - - for (i = 0; i < double_count; i += 2) -- size += sizeof(pcre_uchar *) + IN_UCHARS(ovector[i+1] - ovector[i] + 1); -+ { -+ size += sizeof(pcre_uchar *) + IN_UCHARS(1); -+ if (ovector[i+1] > ovector[i]) size += IN_UCHARS(ovector[i+1] - ovector[i]); -+ } - - stringlist = (pcre_uchar **)(PUBL(malloc))(size); - if (stringlist == NULL) return PCRE_ERROR_NOMEMORY; -@@ -477,7 +480,7 @@ p = (pcre_uchar *)(stringlist + stringcount + 1); - - for (i = 0; i < double_count; i += 2) - { -- int len = ovector[i+1] - ovector[i]; -+ int len = (ovector[i+1] > ovector[i])? (ovector[i+1] - ovector[i]) : 0; - memcpy(p, subject + ovector[i], IN_UCHARS(len)); - *stringlist++ = p; - p += len; -diff --git a/testdata/testinput2 b/testdata/testinput2 -index 00ffe32..967a241 100644 ---- a/testdata/testinput2 -+++ b/testdata/testinput2 -@@ -4232,4 +4232,7 @@ backtracking verbs. --/ - /(?<A>)(?J:(?<B>)(?<B>))(?<C>)/ - \O\CC - -+/(?=a\K)/ -+ ring bpattingbobnd $ 1,oern cou \rb\L -+ - /-- End of testinput2 --/ -diff --git a/testdata/testoutput2 b/testdata/testoutput2 -index ffb4466..5fb28d5 100644 ---- a/testdata/testoutput2 -+++ b/testdata/testoutput2 -@@ -14644,4 +14644,10 @@ No match - Matched, but too many substrings - copy substring C failed -7 - -+/(?=a\K)/ -+ ring bpattingbobnd $ 1,oern cou \rb\L -+Start of matched string is beyond its end - displaying from end to start. -+ 0: a -+ 0L -+ - /-- End of testinput2 --/ --- -2.5.0 - diff --git a/pcre-8.38-Fix-negated-POSIX-class-within-negated-overall-class.patch b/pcre-8.38-Fix-negated-POSIX-class-within-negated-overall-class.patch deleted file mode 100644 index 65ccd00..0000000 --- a/pcre-8.38-Fix-negated-POSIX-class-within-negated-overall-class.patch +++ /dev/null @@ -1,94 +0,0 @@ -From ef6b10fcde41a2687f38d4a9ff2886b037948a1b Mon Sep 17 00:00:00 2001 -From: ph10 <ph10@2f5784b3-3f2a-0410-8824-cb99058d5e15> -Date: Fri, 27 Nov 2015 17:13:13 +0000 -Subject: [PATCH 1/5] Fix negated POSIX class within negated overall class UCP - bug. -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -git-svn-id: svn://vcs.exim.org/pcre/code/trunk@1612 2f5784b3-3f2a-0410-8824-cb99058d5e15 - -Petr Písař: Ported to 8.38. -diff --git a/pcre_compile.c b/pcre_compile.c -index 3360a8b..3670f1e 100644 ---- a/pcre_compile.c -+++ b/pcre_compile.c -@@ -5063,20 +5063,22 @@ for (;; ptr++) - ptr = tempptr + 1; - continue; - -- /* For the other POSIX classes (ascii, xdigit) we are going to fall -- through to the non-UCP case and build a bit map for characters with -- code points less than 256. If we are in a negated POSIX class -- within a non-negated overall class, characters with code points -- greater than 255 must all match. In the special case where we have -- not yet generated any xclass data, and this is the final item in -- the overall class, we need do nothing: later on, the opcode -+ /* For the other POSIX classes (ascii, cntrl, xdigit) we are going -+ to fall through to the non-UCP case and build a bit map for -+ characters with code points less than 256. If we are in a negated -+ POSIX class, characters with code points greater than 255 must -+ either all match or all not match. In the special case where we -+ have not yet generated any xclass data, and this is the final item -+ in the overall class, we need do nothing: later on, the opcode - OP_NCLASS will be used to indicate that characters greater than 255 - are acceptable. If we have already seen an xclass item or one may - follow (we have to assume that it might if this is not the end of -- the class), explicitly match all wide codepoints. */ -+ the class), explicitly list all wide codepoints, which will then -+ either not match or match, depending on whether the class is or is -+ not negated. */ - - default: -- if (!negate_class && local_negate && -+ if (local_negate && - (xclass || tempptr[2] != CHAR_RIGHT_SQUARE_BRACKET)) - { - *class_uchardata++ = XCL_RANGE; -diff --git a/testdata/testinput6 b/testdata/testinput6 -index aeb62a0..a178d3d 100644 ---- a/testdata/testinput6 -+++ b/testdata/testinput6 -@@ -1553,4 +1553,13 @@ - \x{200} - \x{37e} - -+/[^[:^ascii:]\d]/8W -+ a -+ ~ -+ 0 -+ \a -+ \x{7f} -+ \x{389} -+ \x{20ac} -+ - /-- End of testinput6 --/ -diff --git a/testdata/testoutput6 b/testdata/testoutput6 -index beb85aa..b64dc0d 100644 ---- a/testdata/testoutput6 -+++ b/testdata/testoutput6 -@@ -2557,4 +2557,20 @@ No match - \x{37e} - 0: \x{37e} - -+/[^[:^ascii:]\d]/8W -+ a -+ 0: a -+ ~ -+ 0: ~ -+ 0 -+No match -+ \a -+ 0: \x{07} -+ \x{7f} -+ 0: \x{7f} -+ \x{389} -+No match -+ \x{20ac} -+No match -+ - /-- End of testinput6 --/ --- -2.4.3 - diff --git a/pcre-8.38-Fix-non-diagnosis-of-missing-assertion-after-C.patch b/pcre-8.38-Fix-non-diagnosis-of-missing-assertion-after-C.patch deleted file mode 100644 index 5fce5a5..0000000 --- a/pcre-8.38-Fix-non-diagnosis-of-missing-assertion-after-C.patch +++ /dev/null @@ -1,101 +0,0 @@ -From b3db1b7de5cfaa026ec2bc4a393129461a0f5c57 Mon Sep 17 00:00:00 2001 -From: ph10 <ph10@2f5784b3-3f2a-0410-8824-cb99058d5e15> -Date: Sat, 27 Feb 2016 18:44:41 +0000 -Subject: [PATCH] Fix non-diagnosis of missing assertion after (?(?C). -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -git-svn-id: svn://vcs.exim.org/pcre/code/trunk@1638 2f5784b3-3f2a-0410-8824-cb99058d5e15 - -Petr Písař: Ported to 8.38. - -diff --git a/pcre_compile.c b/pcre_compile.c -index 4ffea0c..254c629 100644 ---- a/pcre_compile.c -+++ b/pcre_compile.c -@@ -485,7 +485,7 @@ static const char error_texts[] = - "lookbehind assertion is not fixed length\0" - "malformed number or name after (?(\0" - "conditional group contains more than two branches\0" -- "assertion expected after (?(\0" -+ "assertion expected after (?( or (?(?C)\0" - "(?R or (?[+-]digits must be followed by )\0" - /* 30 */ - "unknown POSIX class name\0" -@@ -6771,6 +6771,15 @@ for (;; ptr++) - for (i = 3;; i++) if (!IS_DIGIT(ptr[i])) break; - if (ptr[i] == CHAR_RIGHT_PARENTHESIS) - tempptr += i + 1; -+ -+ /* tempptr should now be pointing to the opening parenthesis of the -+ assertion condition. */ -+ -+ if (*tempptr != CHAR_LEFT_PARENTHESIS) -+ { -+ *errorcodeptr = ERR28; -+ goto FAILED; -+ } - } - - /* For conditions that are assertions, check the syntax, and then exit -diff --git a/testdata/testinput2 b/testdata/testinput2 -index c805f5f..75e402e 100644 ---- a/testdata/testinput2 -+++ b/testdata/testinput2 -@@ -4241,4 +4241,6 @@ backtracking verbs. --/ - - /((?J)(?'R'(?'R'(?'R'(?'R'(?'R'(?|(\k'R'))))))))/ - -+/\N(?(?C)0?!.)*/ -+ - /-- End of testinput2 --/ -diff --git a/testdata/testoutput2 b/testdata/testoutput2 -index 800a72f..5e88d1a 100644 ---- a/testdata/testoutput2 -+++ b/testdata/testoutput2 -@@ -555,13 +555,13 @@ Failed: malformed number or name after (?( at offset 4 - Failed: malformed number or name after (?( at offset 4 - - /(?(?i))/ --Failed: assertion expected after (?( at offset 3 -+Failed: assertion expected after (?( or (?(?C) at offset 3 - - /(?(abc))/ - Failed: reference to non-existent subpattern at offset 7 - - /(?(?<ab))/ --Failed: assertion expected after (?( at offset 3 -+Failed: assertion expected after (?( or (?(?C) at offset 3 - - /((?s)blah)\s+\1/I - Capturing subpattern count = 1 -@@ -7870,7 +7870,7 @@ No match - Failed: malformed number or name after (?( at offset 6 - - /(?(''))/ --Failed: assertion expected after (?( at offset 4 -+Failed: assertion expected after (?( or (?(?C) at offset 4 - - /(?('R')stuff)/ - Failed: reference to non-existent subpattern at offset 7 -@@ -14346,7 +14346,7 @@ No match - "((?2)+)((?1))" - - "(?(?<E>.*!.*)?)" --Failed: assertion expected after (?( at offset 3 -+Failed: assertion expected after (?( or (?(?C) at offset 3 - - "X((?2)()*+){2}+"BZ - ------------------------------------------------------------------ -@@ -14667,4 +14667,7 @@ No match - - /((?J)(?'R'(?'R'(?'R'(?'R'(?'R'(?|(\k'R'))))))))/ - -+/\N(?(?C)0?!.)*/ -+Failed: assertion expected after (?( or (?(?C) at offset 4 -+ - /-- End of testinput2 --/ --- -2.5.0 - diff --git a/pcre-8.38-Fix-pcretest-bad-behaviour-for-callout-in-lookbehind.patch b/pcre-8.38-Fix-pcretest-bad-behaviour-for-callout-in-lookbehind.patch deleted file mode 100644 index b3ccf93..0000000 --- a/pcre-8.38-Fix-pcretest-bad-behaviour-for-callout-in-lookbehind.patch +++ /dev/null @@ -1,93 +0,0 @@ -From 3da5528b47b88c32224cf9d14d8a4e80cd7a0815 Mon Sep 17 00:00:00 2001 -From: ph10 <ph10@2f5784b3-3f2a-0410-8824-cb99058d5e15> -Date: Sat, 6 Feb 2016 16:54:14 +0000 -Subject: [PATCH] Fix pcretest bad behaviour for callout in lookbehind. -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -git-svn-id: svn://vcs.exim.org/pcre/code/trunk@1625 2f5784b3-3f2a-0410-8824-cb99058d5e15 - -Petr Písař: Ported to 8.38. - -diff --git a/pcretest.c b/pcretest.c -index 488e419..63869fd 100644 ---- a/pcretest.c -+++ b/pcretest.c -@@ -2250,7 +2250,7 @@ data is not zero. */ - static int callout(pcre_callout_block *cb) - { - FILE *f = (first_callout | callout_extra)? outfile : NULL; --int i, pre_start, post_start, subject_length; -+int i, current_position, pre_start, post_start, subject_length; - - if (callout_extra) - { -@@ -2280,14 +2280,19 @@ printed lengths of the substrings. */ - - if (f != NULL) fprintf(f, "--->"); - -+/* If a lookbehind is involved, the current position may be earlier than the -+match start. If so, use the match start instead. */ -+ -+current_position = (cb->current_position >= cb->start_match)? -+ cb->current_position : cb->start_match; -+ - PCHARS(pre_start, cb->subject, 0, cb->start_match, f); - PCHARS(post_start, cb->subject, cb->start_match, -- cb->current_position - cb->start_match, f); -+ current_position - cb->start_match, f); - - PCHARS(subject_length, cb->subject, 0, cb->subject_length, NULL); - --PCHARSV(cb->subject, cb->current_position, -- cb->subject_length - cb->current_position, f); -+PCHARSV(cb->subject, current_position, cb->subject_length - current_position, f); - - if (f != NULL) fprintf(f, "\n"); - -@@ -5740,3 +5745,4 @@ return yield; - } - - /* End of pcretest.c */ -+ -diff --git a/testdata/testinput2 b/testdata/testinput2 -index 967a241..086e0f4 100644 ---- a/testdata/testinput2 -+++ b/testdata/testinput2 -@@ -4235,4 +4235,8 @@ backtracking verbs. --/ - /(?=a\K)/ - ring bpattingbobnd $ 1,oern cou \rb\L - -+/(?<=((?C)0))/ -+ 9010 -+ abcd -+ - /-- End of testinput2 --/ -diff --git a/testdata/testoutput2 b/testdata/testoutput2 -index 5fb28d5..d414a72 100644 ---- a/testdata/testoutput2 -+++ b/testdata/testoutput2 -@@ -14650,4 +14650,19 @@ Start of matched string is beyond its end - displaying from end to start. - 0: a - 0L - -+/(?<=((?C)0))/ -+ 9010 -+--->9010 -+ 0 ^ 0 -+ 0 ^ 0 -+ 0: -+ 1: 0 -+ abcd -+--->abcd -+ 0 ^ 0 -+ 0 ^ 0 -+ 0 ^ 0 -+ 0 ^ 0 -+No match -+ - /-- End of testinput2 --/ --- -2.5.0 - diff --git a/pcre-8.38-Fix-pcretest-loop-for-global-matching-with-an-ovecto.patch b/pcre-8.38-Fix-pcretest-loop-for-global-matching-with-an-ovecto.patch deleted file mode 100644 index 6cdb8c6..0000000 --- a/pcre-8.38-Fix-pcretest-loop-for-global-matching-with-an-ovecto.patch +++ /dev/null @@ -1,33 +0,0 @@ -From 0fc2edb79b3815c6511fd75c36a57893e4acaee6 Mon Sep 17 00:00:00 2001 -From: ph10 <ph10@2f5784b3-3f2a-0410-8824-cb99058d5e15> -Date: Sat, 27 Feb 2016 17:55:24 +0000 -Subject: [PATCH] Fix pcretest loop for global matching with an ovector size - less than 2. -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -git-svn-id: svn://vcs.exim.org/pcre/code/trunk@1637 2f5784b3-3f2a-0410-8824-cb99058d5e15 - -Petr Písař: Ported to 8.38. - -diff --git a/pcretest.c b/pcretest.c -index 63869fd..78ef517 100644 ---- a/pcretest.c -+++ b/pcretest.c -@@ -5617,6 +5617,12 @@ while (!done) - break; - } - -+ if (use_size_offsets < 2) -+ { -+ fprintf(outfile, "Cannot do global matching with an ovector size < 2\n"); -+ break; -+ } -+ - /* If we have matched an empty string, first check to see if we are at - the end of the subject. If so, the /g loop is over. Otherwise, mimic what - Perl's /g options does. This turns out to be rather cunning. First we set --- -2.5.0 - diff --git a/pcre-8.38-Fix-typo-in-pcre_study.patch b/pcre-8.38-Fix-typo-in-pcre_study.patch deleted file mode 100644 index 194d9ad..0000000 --- a/pcre-8.38-Fix-typo-in-pcre_study.patch +++ /dev/null @@ -1,28 +0,0 @@ -From f9cc3952c363234ecb472dbea82661ba733f8bd1 Mon Sep 17 00:00:00 2001 -From: ph10 <ph10@2f5784b3-3f2a-0410-8824-cb99058d5e15> -Date: Sun, 28 Feb 2016 14:56:33 +0000 -Subject: [PATCH] Fix typo in pcre_study(). -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -git-svn-id: svn://vcs.exim.org/pcre/code/trunk@1639 2f5784b3-3f2a-0410-8824-cb99058d5e15 - -Petr Písař: Ported to 8.38. - -diff --git a/pcre_study.c b/pcre_study.c -index 7fd0ba0..d9d4960 100644 ---- a/pcre_study.c -+++ b/pcre_study.c -@@ -1371,7 +1371,7 @@ do - for (c = 0; c < 16; c++) start_bits[c] |= map[c]; - for (c = 128; c < 256; c++) - { -- if ((map[c/8] && (1 << (c&7))) != 0) -+ if ((map[c/8] & (1 << (c&7))) != 0) - { - int d = (c >> 6) | 0xc0; /* Set bit for this starter */ - start_bits[d/8] |= (1 << (d&7)); /* and then skip on to the */ --- -2.5.0 - diff --git a/pcre-8.38-Fix-workspace-overflow-for-ACCEPT-with-deeply-nested.patch b/pcre-8.38-Fix-workspace-overflow-for-ACCEPT-with-deeply-nested.patch deleted file mode 100644 index ae51b50..0000000 --- a/pcre-8.38-Fix-workspace-overflow-for-ACCEPT-with-deeply-nested.patch +++ /dev/null @@ -1,163 +0,0 @@ -From 943a5105b9fe2842851003f692c7077a6cdbeefe Mon Sep 17 00:00:00 2001 -From: ph10 <ph10@2f5784b3-3f2a-0410-8824-cb99058d5e15> -Date: Wed, 10 Feb 2016 19:13:17 +0000 -Subject: [PATCH] Fix workspace overflow for (*ACCEPT) with deeply nested - parentheses. -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -git-svn-id: svn://vcs.exim.org/pcre/code/trunk@1631 2f5784b3-3f2a-0410-8824-cb99058d5e15 - -Petr Písař: Ported to 8.38. - -diff --git a/pcre_compile.c b/pcre_compile.c -index b9a239e..5019854 100644 ---- a/pcre_compile.c -+++ b/pcre_compile.c -@@ -6,7 +6,7 @@ - and semantics are as close as possible to those of the Perl 5 language. - - Written by Philip Hazel -- Copyright (c) 1997-2014 University of Cambridge -+ Copyright (c) 1997-2016 University of Cambridge - - ----------------------------------------------------------------------------- - Redistribution and use in source and binary forms, with or without -@@ -560,6 +560,7 @@ static const char error_texts[] = - /* 85 */ - "parentheses are too deeply nested (stack check)\0" - "digits missing in \\x{} or \\o{}\0" -+ "regular expression is too complicated\0" - ; - - /* Table to identify digits and hex digits. This is used when compiling -@@ -4591,7 +4592,8 @@ for (;; ptr++) - if (code > cd->start_workspace + cd->workspace_size - - WORK_SIZE_SAFETY_MARGIN) /* Check for overrun */ - { -- *errorcodeptr = ERR52; -+ *errorcodeptr = (code >= cd->start_workspace + cd->workspace_size)? -+ ERR52 : ERR87; - goto FAILED; - } - -@@ -6626,8 +6628,21 @@ for (;; ptr++) - cd->had_accept = TRUE; - for (oc = cd->open_caps; oc != NULL; oc = oc->next) - { -- *code++ = OP_CLOSE; -- PUT2INC(code, 0, oc->number); -+ if (lengthptr != NULL) -+ { -+#ifdef COMPILE_PCRE8 -+ *lengthptr += 1 + IMM2_SIZE; -+#elif defined COMPILE_PCRE16 -+ *lengthptr += 2 + IMM2_SIZE; -+#elif defined COMPILE_PCRE32 -+ *lengthptr += 4 + IMM2_SIZE; -+#endif -+ } -+ else -+ { -+ *code++ = OP_CLOSE; -+ PUT2INC(code, 0, oc->number); -+ } - } - setverb = *code++ = - (cd->assert_depth > 0)? OP_ASSERT_ACCEPT : OP_ACCEPT; -diff --git a/pcre_internal.h b/pcre_internal.h -index f7a5ee7..dbfe80e 100644 ---- a/pcre_internal.h -+++ b/pcre_internal.h -@@ -7,7 +7,7 @@ - and semantics are as close as possible to those of the Perl 5 language. - - Written by Philip Hazel -- Copyright (c) 1997-2014 University of Cambridge -+ Copyright (c) 1997-2016 University of Cambridge - - ----------------------------------------------------------------------------- - Redistribution and use in source and binary forms, with or without -@@ -2289,7 +2289,7 @@ enum { ERR0, ERR1, ERR2, ERR3, ERR4, ERR5, ERR6, ERR7, ERR8, ERR9, - ERR50, ERR51, ERR52, ERR53, ERR54, ERR55, ERR56, ERR57, ERR58, ERR59, - ERR60, ERR61, ERR62, ERR63, ERR64, ERR65, ERR66, ERR67, ERR68, ERR69, - ERR70, ERR71, ERR72, ERR73, ERR74, ERR75, ERR76, ERR77, ERR78, ERR79, -- ERR80, ERR81, ERR82, ERR83, ERR84, ERR85, ERR86, ERRCOUNT }; -+ ERR80, ERR81, ERR82, ERR83, ERR84, ERR85, ERR86, ERR87, ERRCOUNT }; - - /* JIT compiling modes. The function list is indexed by them. */ - -diff --git a/pcreposix.c b/pcreposix.c -index dcc13ef..55b6ddc 100644 ---- a/pcreposix.c -+++ b/pcreposix.c -@@ -6,7 +6,7 @@ - and semantics are as close as possible to those of the Perl 5 language. - - Written by Philip Hazel -- Copyright (c) 1997-2014 University of Cambridge -+ Copyright (c) 1997-2016 University of Cambridge - - ----------------------------------------------------------------------------- - Redistribution and use in source and binary forms, with or without -@@ -173,7 +173,8 @@ static const int eint[] = { - REG_BADPAT, /* group name must start with a non-digit */ - /* 85 */ - REG_BADPAT, /* parentheses too deeply nested (stack check) */ -- REG_BADPAT /* missing digits in \x{} or \o{} */ -+ REG_BADPAT, /* missing digits in \x{} or \o{} */ -+ REG_BADPAT /* pattern too complicated */ - }; - - /* Table of texts corresponding to POSIX error codes */ -diff --git a/testdata/testinput11 b/testdata/testinput11 -index ac9d228..6f0989a 100644 ---- a/testdata/testinput11 -+++ b/testdata/testinput11 -@@ -138,4 +138,6 @@ is required for these tests. --/ - - /.((?2)(?R)\1)()/B - -+/([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00](*ACCEPT)/ -+ - /-- End of testinput11 --/ -diff --git a/testdata/testoutput11-16 b/testdata/testoutput11-16 -index 280692e..3c485da 100644 ---- a/testdata/testoutput11-16 -+++ b/testdata/testoutput11-16 -@@ -765,4 +765,7 @@ Memory allocation (code space): 14 - 25 End - ------------------------------------------------------------------ - -+/([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00](*ACCEPT)/ -+Failed: regular expression is too complicated at offset 490 -+ - /-- End of testinput11 --/ -diff --git a/testdata/testoutput11-32 b/testdata/testoutput11-32 -index cdbda74..e19518d 100644 ---- a/testdata/testoutput11-32 -+++ b/testdata/testoutput11-32 -@@ -765,4 +765,7 @@ Memory allocation (code space): 28 - 25 End - ------------------------------------------------------------------ - -+/([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00](*ACCEPT)/ -+Failed: missing ) at offset 509 -+ - /-- End of testinput11 --/ -diff --git a/testdata/testoutput11-8 b/testdata/testoutput11-8 -index cb37896..5a4fbb2 100644 ---- a/testdata/testoutput11-8 -+++ b/testdata/testoutput11-8 -@@ -765,4 +765,7 @@ Memory allocation (code space): 10 - 38 End - ------------------------------------------------------------------ - -+/([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00]([00](*ACCEPT)/ -+Failed: missing ) at offset 509 -+ - /-- End of testinput11 --/ --- -2.5.0 - diff --git a/pcre-8.38-Fix-x-bug-when-pattern-starts-with-white-space-and-x.patch b/pcre-8.38-Fix-x-bug-when-pattern-starts-with-white-space-and-x.patch deleted file mode 100644 index 4a2c3dc..0000000 --- a/pcre-8.38-Fix-x-bug-when-pattern-starts-with-white-space-and-x.patch +++ /dev/null @@ -1,193 +0,0 @@ -From 46ed1a703b067e5b679eacf6500a54dae35f8130 Mon Sep 17 00:00:00 2001 -From: ph10 <ph10@2f5784b3-3f2a-0410-8824-cb99058d5e15> -Date: Thu, 3 Dec 2015 17:05:40 +0000 -Subject: [PATCH] Fix /x bug when pattern starts with white space and (?-x) -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -git-svn-id: svn://vcs.exim.org/pcre/code/trunk@1617 2f5784b3-3f2a-0410-8824-cb99058d5e15 - -Petr Písař: Ported to 8.38. - -diff --git a/pcre_compile.c b/pcre_compile.c -index beed46b..57719b9 100644 ---- a/pcre_compile.c -+++ b/pcre_compile.c -@@ -7607,39 +7607,15 @@ for (;; ptr++) - newoptions = (options | set) & (~unset); - - /* If the options ended with ')' this is not the start of a nested -- group with option changes, so the options change at this level. If this -- item is right at the start of the pattern, the options can be -- abstracted and made external in the pre-compile phase, and ignored in -- the compile phase. This can be helpful when matching -- for instance in -- caseless checking of required bytes. -- -- If the code pointer is not (cd->start_code + 1 + LINK_SIZE), we are -- definitely *not* at the start of the pattern because something has been -- compiled. In the pre-compile phase, however, the code pointer can have -- that value after the start, because it gets reset as code is discarded -- during the pre-compile. However, this can happen only at top level - if -- we are within parentheses, the starting BRA will still be present. At -- any parenthesis level, the length value can be used to test if anything -- has been compiled at that level. Thus, a test for both these conditions -- is necessary to ensure we correctly detect the start of the pattern in -- both phases. -- -+ group with option changes, so the options change at this level. - If we are not at the pattern start, reset the greedy defaults and the - case value for firstchar and reqchar. */ - - if (*ptr == CHAR_RIGHT_PARENTHESIS) - { -- if (code == cd->start_code + 1 + LINK_SIZE && -- (lengthptr == NULL || *lengthptr == 2 + 2*LINK_SIZE)) -- { -- cd->external_options = newoptions; -- } -- else -- { -- greedy_default = ((newoptions & PCRE_UNGREEDY) != 0); -- greedy_non_default = greedy_default ^ 1; -- req_caseopt = ((newoptions & PCRE_CASELESS) != 0)? REQ_CASELESS:0; -- } -+ greedy_default = ((newoptions & PCRE_UNGREEDY) != 0); -+ greedy_non_default = greedy_default ^ 1; -+ req_caseopt = ((newoptions & PCRE_CASELESS) != 0)? REQ_CASELESS:0; - - /* Change options at this level, and pass them back for use - in subsequent branches. */ -diff --git a/testdata/testoutput2 b/testdata/testoutput2 -index ac33cc4..6c42897 100644 ---- a/testdata/testoutput2 -+++ b/testdata/testoutput2 -@@ -419,7 +419,7 @@ Need char = '>' - - /(?U)<.*>/I - Capturing subpattern count = 0 --Options: ungreedy -+No options - First char = '<' - Need char = '>' - abc<def>ghi<klm>nop -@@ -443,7 +443,7 @@ Need char = '=' - - /(?U)={3,}?/I - Capturing subpattern count = 0 --Options: ungreedy -+No options - First char = '=' - Need char = '=' - abc========def -@@ -477,7 +477,7 @@ Failed: lookbehind assertion is not fixed length at offset 12 - - /(?i)abc/I - Capturing subpattern count = 0 --Options: caseless -+No options - First char = 'a' (caseless) - Need char = 'c' (caseless) - -@@ -489,7 +489,7 @@ No need char - - /(?i)^1234/I - Capturing subpattern count = 0 --Options: anchored caseless -+Options: anchored - No first char - No need char - -@@ -502,7 +502,7 @@ No need char - /(?s).*/I - Capturing subpattern count = 0 - May match empty string --Options: anchored dotall -+Options: anchored - No first char - No need char - -@@ -516,7 +516,7 @@ Starting chars: a b c d - - /(?i)[abcd]/IS - Capturing subpattern count = 0 --Options: caseless -+No options - No first char - No need char - Subject length lower bound = 1 -@@ -524,7 +524,7 @@ Starting chars: A B C D a b c d - - /(?m)[xy]|(b|c)/IS - Capturing subpattern count = 1 --Options: multiline -+No options - No first char - No need char - Subject length lower bound = 1 -@@ -538,7 +538,7 @@ No need char - - /(?i)(^a|^b)/Im - Capturing subpattern count = 1 --Options: caseless multiline -+Options: multiline - First char at start or follows newline - No need char - -@@ -1179,7 +1179,7 @@ No need char - End - ------------------------------------------------------------------ - Capturing subpattern count = 1 --Options: anchored dotall -+Options: anchored - No first char - No need char - -@@ -2735,7 +2735,7 @@ No match - End - ------------------------------------------------------------------ - Capturing subpattern count = 0 --Options: caseless extended -+Options: extended - First char = 'a' (caseless) - Need char = 'c' (caseless) - -@@ -2748,7 +2748,7 @@ Need char = 'c' (caseless) - End - ------------------------------------------------------------------ - Capturing subpattern count = 0 --Options: caseless extended -+Options: extended - First char = 'a' (caseless) - Need char = 'c' (caseless) - -@@ -3095,7 +3095,7 @@ Need char = 'b' - End - ------------------------------------------------------------------ - Capturing subpattern count = 0 --Options: ungreedy -+No options - First char = 'x' - Need char = 'b' - xaaaab -@@ -3497,7 +3497,7 @@ Need char = 'c' - - /(?i)[ab]/IS - Capturing subpattern count = 0 --Options: caseless -+No options - No first char - No need char - Subject length lower bound = 1 -@@ -6299,7 +6299,7 @@ Capturing subpattern count = 3 - Named capturing subpatterns: - A 2 - A 3 --Options: anchored dupnames -+Options: anchored - Duplicate name status changes - No first char - No need char --- -2.4.3 - diff --git a/pcre-8.38-Give-error-for-regexec-with-pmatch-NULL-and-REG_STAR.patch b/pcre-8.38-Give-error-for-regexec-with-pmatch-NULL-and-REG_STAR.patch deleted file mode 100644 index 3f8a448..0000000 --- a/pcre-8.38-Give-error-for-regexec-with-pmatch-NULL-and-REG_STAR.patch +++ /dev/null @@ -1,28 +0,0 @@ -From 108377b836fc29a84f5286287629d96549b1c777 Mon Sep 17 00:00:00 2001 -From: ph10 <ph10@2f5784b3-3f2a-0410-8824-cb99058d5e15> -Date: Sun, 29 Nov 2015 17:38:25 +0000 -Subject: [PATCH 3/5] Give error for regexec with pmatch=NULL and REG_STARTEND - set. -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -git-svn-id: svn://vcs.exim.org/pcre/code/trunk@1614 2f5784b3-3f2a-0410-8824-cb99058d5e15 - -Petr Písař: Ported to 8.38. - -diff --git a/pcreposix.c b/pcreposix.c -index f024423..dcc13ef 100644 ---- a/pcreposix.c -+++ b/pcreposix.c -@@ -364,6 +364,7 @@ start location rather than being passed as a PCRE "starting offset". */ - - if ((eflags & REG_STARTEND) != 0) - { -+ if (pmatch == NULL) return REG_INVARG; - so = pmatch[0].rm_so; - eo = pmatch[0].rm_eo; - } --- -2.4.3 - diff --git a/pcre-8.38-Yet-another-duplicate-name-bugfix-by-overestimating-.patch b/pcre-8.38-Yet-another-duplicate-name-bugfix-by-overestimating-.patch deleted file mode 100644 index 9dcef4d..0000000 --- a/pcre-8.38-Yet-another-duplicate-name-bugfix-by-overestimating-.patch +++ /dev/null @@ -1,56 +0,0 @@ -From b7537308b7c758f33c347cb0bec62754c43c271f Mon Sep 17 00:00:00 2001 -From: ph10 <ph10@2f5784b3-3f2a-0410-8824-cb99058d5e15> -Date: Sat, 27 Feb 2016 17:38:11 +0000 -Subject: [PATCH] Yet another duplicate name bugfix by overestimating the - memory needed (i.e. another hack - PCRE2 has this "properly" fixed). -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -git-svn-id: svn://vcs.exim.org/pcre/code/trunk@1636 2f5784b3-3f2a-0410-8824-cb99058d5e15 - -Petr Písař: Ported to 8.38. - -diff --git a/pcre_compile.c b/pcre_compile.c -index 5019854..4ffea0c 100644 ---- a/pcre_compile.c -+++ b/pcre_compile.c -@@ -7311,7 +7311,12 @@ for (;; ptr++) - so far in order to get the number. If the name is not found, leave - the value of recno as 0 for a forward reference. */ - -- else -+ /* This patch (removing "else") fixes a problem when a reference is -+ to multiple identically named nested groups from within the nest. -+ Once again, it is not the "proper" fix, and it results in an -+ over-allocation of memory. */ -+ -+ /* else */ - { - ng = cd->named_groups; - for (i = 0; i < cd->names_found; i++, ng++) -diff --git a/testdata/testinput2 b/testdata/testinput2 -index 086e0f4..c805f5f 100644 ---- a/testdata/testinput2 -+++ b/testdata/testinput2 -@@ -4239,4 +4239,6 @@ backtracking verbs. --/ - 9010 - abcd - -+/((?J)(?'R'(?'R'(?'R'(?'R'(?'R'(?|(\k'R'))))))))/ -+ - /-- End of testinput2 --/ -diff --git a/testdata/testoutput2 b/testdata/testoutput2 -index d414a72..800a72f 100644 ---- a/testdata/testoutput2 -+++ b/testdata/testoutput2 -@@ -14665,4 +14665,6 @@ Start of matched string is beyond its end - displaying from end to start. - 0 ^ 0 - No match - -+/((?J)(?'R'(?'R'(?'R'(?'R'(?'R'(?|(\k'R'))))))))/ -+ - /-- End of testinput2 --/ --- -2.5.0 - diff --git a/pcre-8.39-cygwin-jit.patch b/pcre-8.39-cygwin-jit.patch new file mode 100644 index 0000000..694729f --- /dev/null +++ b/pcre-8.39-cygwin-jit.patch @@ -0,0 +1,170 @@ +--- origsrc/pcre-8.39/sljit/sljitConfigInternal.h 2016-04-06 03:05:43.000000000 -0500 ++++ src/pcre-8.39/sljit/sljitConfigInternal.h 2016-08-11 14:33:58.201820000 -0500 +@@ -564,7 +564,7 @@ SLJIT_API_FUNC_ATTRIBUTE void sljit_free + + #elif (defined SLJIT_CONFIG_X86_64 && SLJIT_CONFIG_X86_64) + +-#ifndef _WIN64 ++#if !defined _WIN64 && !defined __CYGWIN__ + #define SLJIT_NUMBER_OF_REGISTERS 12 + #define SLJIT_NUMBER_OF_SAVED_REGISTERS 6 + #define SLJIT_LOCALS_OFFSET_BASE (sizeof(sljit_sw)) +@@ -572,7 +572,7 @@ SLJIT_API_FUNC_ATTRIBUTE void sljit_free + #define SLJIT_NUMBER_OF_REGISTERS 12 + #define SLJIT_NUMBER_OF_SAVED_REGISTERS 8 + #define SLJIT_LOCALS_OFFSET_BASE ((4 + 2) * sizeof(sljit_sw)) +-#endif /* _WIN64 */ ++#endif /* _WIN64 || __CYGWIN__ */ + + #elif (defined SLJIT_CONFIG_ARM_V5 && SLJIT_CONFIG_ARM_V5) || (defined SLJIT_CONFIG_ARM_V7 && SLJIT_CONFIG_ARM_V7) + +@@ -644,7 +644,7 @@ SLJIT_API_FUNC_ATTRIBUTE void sljit_free + (SLJIT_NUMBER_OF_REGISTERS - SLJIT_NUMBER_OF_SAVED_REGISTERS) + + #define SLJIT_NUMBER_OF_FLOAT_REGISTERS 6 +-#if (defined SLJIT_CONFIG_X86_64 && SLJIT_CONFIG_X86_64) && (defined _WIN64) ++#if (defined SLJIT_CONFIG_X86_64 && SLJIT_CONFIG_X86_64) && (defined _WIN64 || defined __CYGWIN__) + #define SLJIT_NUMBER_OF_SAVED_FLOAT_REGISTERS 1 + #else + #define SLJIT_NUMBER_OF_SAVED_FLOAT_REGISTERS 0 +--- origsrc/pcre-8.39/sljit/sljitNativeX86_32.c 2016-02-29 11:00:26.000000000 -0600 ++++ src/pcre-8.39/sljit/sljitNativeX86_32.c 2016-08-11 14:34:29.121178600 -0500 +@@ -164,7 +164,7 @@ SLJIT_API_FUNC_ATTRIBUTE sljit_s32 sljit + #endif + + compiler->local_size = local_size; +-#ifdef _WIN32 ++#if defined _WIN32 || defined __CYGWIN__ + if (local_size > 1024) { + #if (defined SLJIT_X86_32_FASTCALL && SLJIT_X86_32_FASTCALL) + FAIL_IF(emit_do_imm(compiler, MOV_r_i32 + reg_map[SLJIT_R0], local_size)); +--- origsrc/pcre-8.39/sljit/sljitNativeX86_64.c 2016-02-29 11:00:26.000000000 -0600 ++++ src/pcre-8.39/sljit/sljitNativeX86_64.c 2016-08-11 14:35:57.151763100 -0500 +@@ -131,7 +131,7 @@ SLJIT_API_FUNC_ATTRIBUTE sljit_s32 sljit + + INC_SIZE(size); + +-#ifndef _WIN64 ++#if !defined _WIN64 && !defined __CYGWIN__ + if (args > 0) { + *inst++ = REX_W; + *inst++ = MOV_r_rm; +@@ -169,7 +169,7 @@ SLJIT_API_FUNC_ATTRIBUTE sljit_s32 sljit + local_size = ((local_size + SLJIT_LOCALS_OFFSET + saved_register_size + 15) & ~15) - saved_register_size; + compiler->local_size = local_size; + +-#ifdef _WIN64 ++#if defined _WIN64 || defined __CYGWIN__ + if (local_size > 1024) { + /* Allocate stack for the callback, which grows the stack. */ + inst = (sljit_u8*)ensure_buf(compiler, 1 + 4 + (3 + sizeof(sljit_s32))); +@@ -223,7 +223,7 @@ SLJIT_API_FUNC_ATTRIBUTE sljit_s32 sljit + inst += sizeof(sljit_s32); + } + +-#ifdef _WIN64 ++#if defined _WIN64 || defined __CYGWIN__ + /* Save xmm6 register: movaps [rsp + 0x20], xmm6 */ + if (fscratches >= 6 || fsaveds >= 1) { + inst = (sljit_u8*)ensure_buf(compiler, 1 + 5); +@@ -264,7 +264,7 @@ SLJIT_API_FUNC_ATTRIBUTE sljit_s32 sljit + compiler->flags_saved = 0; + FAIL_IF(emit_mov_before_return(compiler, op, src, srcw)); + +-#ifdef _WIN64 ++#if defined _WIN64 || defined __CYGWIN__ + /* Restore xmm6 register: movaps xmm6, [rsp + 0x20] */ + if (compiler->fscratches >= 6 || compiler->fsaveds >= 1) { + inst = (sljit_u8*)ensure_buf(compiler, 1 + 5); +@@ -557,7 +557,7 @@ static SLJIT_INLINE sljit_s32 call_with_ + { + sljit_u8 *inst; + +-#ifndef _WIN64 ++#if !defined _WIN64 && !defined __CYGWIN__ + SLJIT_COMPILE_ASSERT(reg_map[SLJIT_R1] == 6 && reg_map[SLJIT_R0] < 8 && reg_map[SLJIT_R2] < 8, args_registers); + + inst = (sljit_u8*)ensure_buf(compiler, 1 + ((type < SLJIT_CALL3) ? 3 : 6)); +--- origsrc/pcre-8.39/sljit/sljitNativeX86_common.c 2016-03-04 03:20:25.000000000 -0600 ++++ src/pcre-8.39/sljit/sljitNativeX86_common.c 2016-08-11 14:39:01.993876900 -0500 +@@ -87,7 +87,7 @@ static const sljit_u8 reg_map[SLJIT_NUMB + /* Note: r12 & 0x7 == 0b100, which decoded as SIB byte present + Note: avoid to use r12 and r13 for memory addessing + therefore r12 is better for SAVED_EREG than SAVED_REG. */ +-#ifndef _WIN64 ++#if !defined _WIN64 && !defined __CYGWIN__ + /* 1st passed in rdi, 2nd argument passed in rsi, 3rd in rdx. */ + static const sljit_u8 reg_map[SLJIT_NUMBER_OF_REGISTERS + 5] = { + 0, 0, 6, 1, 8, 11, 10, 12, 5, 13, 14, 15, 3, 4, 2, 7, 9 +@@ -628,7 +628,7 @@ static SLJIT_INLINE sljit_s32 emit_resto + return SLJIT_SUCCESS; + } + +-#ifdef _WIN32 ++#if defined _WIN32 || defined __CYGWIN__ + #include <malloc.h> + + static void SLJIT_CALL sljit_grow_stack(sljit_sw local_size) +@@ -750,7 +750,7 @@ SLJIT_API_FUNC_ATTRIBUTE sljit_s32 sljit + case SLJIT_DIV_SW: + compiler->flags_saved = 0; + #if (defined SLJIT_CONFIG_X86_64 && SLJIT_CONFIG_X86_64) +-#ifdef _WIN64 ++#if defined _WIN64 || defined __CYGWIN__ + SLJIT_COMPILE_ASSERT( + reg_map[SLJIT_R0] == 0 + && reg_map[SLJIT_R1] == 2 +@@ -769,7 +769,7 @@ SLJIT_API_FUNC_ATTRIBUTE sljit_s32 sljit + + op = GET_OPCODE(op); + if ((op | 0x2) == SLJIT_DIV_UW) { +-#if (defined SLJIT_CONFIG_X86_32 && SLJIT_CONFIG_X86_32) || defined(_WIN64) ++#if (defined SLJIT_CONFIG_X86_32 && SLJIT_CONFIG_X86_32) || defined(_WIN64) || defined(__CYGWIN__) + EMIT_MOV(compiler, TMP_REG1, 0, SLJIT_R1, 0); + inst = emit_x86_instruction(compiler, 1, SLJIT_R1, 0, SLJIT_R1, 0); + #else +@@ -780,7 +780,7 @@ SLJIT_API_FUNC_ATTRIBUTE sljit_s32 sljit + } + + if ((op | 0x2) == SLJIT_DIV_SW) { +-#if (defined SLJIT_CONFIG_X86_32 && SLJIT_CONFIG_X86_32) || defined(_WIN64) ++#if (defined SLJIT_CONFIG_X86_32 && SLJIT_CONFIG_X86_32) || defined(_WIN64) || defined(__CYGWIN__) + EMIT_MOV(compiler, TMP_REG1, 0, SLJIT_R1, 0); + #endif + +@@ -812,7 +812,7 @@ SLJIT_API_FUNC_ATTRIBUTE sljit_s32 sljit + *inst++ = GROUP_F7; + *inst = MOD_REG | ((op >= SLJIT_DIVMOD_UW) ? reg_map[TMP_REG1] : reg_map[SLJIT_R1]); + #else +-#ifdef _WIN64 ++#if defined _WIN64 || defined __CYGWIN__ + size = (!compiler->mode32 || op >= SLJIT_DIVMOD_UW) ? 3 : 2; + #else + size = (!compiler->mode32) ? 3 : 2; +@@ -820,7 +820,7 @@ SLJIT_API_FUNC_ATTRIBUTE sljit_s32 sljit + inst = (sljit_u8*)ensure_buf(compiler, 1 + size); + FAIL_IF(!inst); + INC_SIZE(size); +-#ifdef _WIN64 ++#if defined _WIN64 || defined __CYGWIN__ + if (!compiler->mode32) + *inst++ = REX_W | ((op >= SLJIT_DIVMOD_UW) ? REX_B : 0); + else if (op >= SLJIT_DIVMOD_UW) +@@ -850,7 +850,7 @@ SLJIT_API_FUNC_ATTRIBUTE sljit_s32 sljit + *inst |= IDIV; + break; + } +-#if (defined SLJIT_CONFIG_X86_64 && SLJIT_CONFIG_X86_64) && !defined(_WIN64) ++#if (defined SLJIT_CONFIG_X86_64 && SLJIT_CONFIG_X86_64) && !defined(_WIN64) && !defined(__CYGWIN__) + if (op <= SLJIT_DIVMOD_SW) + EMIT_MOV(compiler, SLJIT_R1, 0, TMP_REG1, 0); + #else +@@ -2616,7 +2616,7 @@ SLJIT_API_FUNC_ATTRIBUTE sljit_s32 sljit + srcw += sizeof(sljit_sw); + #endif + #endif +-#if (defined SLJIT_CONFIG_X86_64 && SLJIT_CONFIG_X86_64) && defined(_WIN64) ++#if (defined SLJIT_CONFIG_X86_64 && SLJIT_CONFIG_X86_64) && (defined(_WIN64) || defined(__CYGWIN__)) + if (src == SLJIT_R2) { + EMIT_MOV(compiler, TMP_REG1, 0, src, 0); + src = TMP_REG1; @@ -1 +1 @@ -00aabbfe56d5a48b270f999b508c5ad2 pcre-8.38.tar.bz2 +e3fca7650a0556a2647821679d81f585 pcre-8.39.tar.bz2 |