summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjoerg <joerg@pkgsrc.org>2016-03-29 22:03:52 +0000
committerjoerg <joerg@pkgsrc.org>2016-03-29 22:03:52 +0000
commita5060952c42e8c6bcbde0a66ff4900ecde238440 (patch)
treead184afa8216d738b7d41bea1ad778477f62b82a
parent3bc6789ba3cbe085cb9db6e8f3b6a06ca63cd2e4 (diff)
downloadpkgsrc-a5060952c42e8c6bcbde0a66ff4900ecde238440.tar.gz
Don't depend on GCC's VLA of non-POD types extensions.
-rw-r--r--devel/cre2/distinfo3
-rw-r--r--devel/cre2/patches/patch-src_cre2.cpp110
2 files changed, 112 insertions, 1 deletions
diff --git a/devel/cre2/distinfo b/devel/cre2/distinfo
index ee98660e6c7..1446e15fc04 100644
--- a/devel/cre2/distinfo
+++ b/devel/cre2/distinfo
@@ -1,6 +1,7 @@
-$NetBSD: distinfo,v 1.1 2016/02/08 05:48:07 agc Exp $
+$NetBSD: distinfo,v 1.2 2016/03/29 22:03:52 joerg Exp $
SHA1 (cre2.tar.gz) = f5e9286a1829a5387984fbe3d01fe3bfe86bc6ac
RMD160 (cre2.tar.gz) = e3fab4f0b994adbcf4b7cecc45640b2023fbbfec
SHA512 (cre2.tar.gz) = 3180b99bdb68079b33e78dfbe9f943737510021ad2ea2144acb1014200d0e253317e6b52d268c3dae45ddd282c90bb49053fc43de607f8ff0c7f9a9ac9aeb2b7
Size (cre2.tar.gz) = 38090 bytes
+SHA1 (patch-src_cre2.cpp) = 431df2f49cc49919712e163cd97b9b41cd803f2b
diff --git a/devel/cre2/patches/patch-src_cre2.cpp b/devel/cre2/patches/patch-src_cre2.cpp
new file mode 100644
index 00000000000..cc19cd62884
--- /dev/null
+++ b/devel/cre2/patches/patch-src_cre2.cpp
@@ -0,0 +1,110 @@
+$NetBSD: patch-src_cre2.cpp,v 1.1 2016/03/29 22:03:52 joerg Exp $
+
+--- src/cre2.cpp.orig 2016-03-28 17:32:57.445282715 +0000
++++ src/cre2.cpp
+@@ -17,6 +17,7 @@
+
+ #include <cstdlib>
+ #include <cstdio>
++#include <vector>
+
+
+ /** --------------------------------------------------------------------
+@@ -201,7 +202,7 @@ cre2_match (const cre2_regexp_t *re , co
+ cre2_string_t *match, int nmatch)
+ {
+ re2::StringPiece text_re2(text, textlen);
+- re2::StringPiece match_re2[nmatch];
++ std::vector<re2::StringPiece> match_re2(nmatch);
+ RE2::Anchor anchor_re2 = RE2::UNANCHORED;
+ bool retval; // 0 for no match
+ // 1 for successful matching
+@@ -215,7 +216,7 @@ cre2_match (const cre2_regexp_t *re , co
+ case CRE2_UNANCHORED:
+ break;
+ }
+- retval = TO_CONST_RE2(re)->Match(text_re2, startpos, endpos, anchor_re2, match_re2, nmatch);
++ retval = TO_CONST_RE2(re)->Match(text_re2, startpos, endpos, anchor_re2, match_re2.data(), nmatch);
+ if (retval) {
+ for (int i=0; i<nmatch; i++) {
+ match[i].data = match_re2[i].data();
+@@ -272,15 +273,15 @@ cre2_strings_to_ranges (const char * tex
+ cre2_string_t * match, int nmatch) \
+ { \
+ re2::StringPiece input(text->data, text->length); \
+- re2::StringPiece strv[nmatch]; \
+- RE2::Arg argv[nmatch]; \
+- RE2::Arg * args[nmatch]; \
++ std::vector<re2::StringPiece> strv(nmatch); \
++ std::vector<RE2::Arg> argv(nmatch); \
++ std::vector<RE2::Arg *> args(nmatch); \
+ bool retval; \
+ for (int i=0; i<nmatch; ++i) { \
+ argv[i] = &strv[i]; \
+ args[i] = &argv[i]; \
+ } \
+- retval = RE2::FUN(input, pattern, args, nmatch); \
++ retval = RE2::FUN(input, pattern, args.data(), nmatch); \
+ if (retval) { \
+ for (int i=0; i<nmatch; ++i) { \
+ match[i].data = strv[i].data(); \
+@@ -301,15 +302,15 @@ DEFINE_MATCH_ZSTRING_FUN(cre2_partial_ma
+ cre2_string_t * match, int nmatch) \
+ { \
+ re2::StringPiece input(text->data, text->length); \
+- re2::StringPiece strv[nmatch]; \
+- RE2::Arg argv[nmatch]; \
+- RE2::Arg * args[nmatch]; \
++ std::vector<re2::StringPiece> strv(nmatch); \
++ std::vector<RE2::Arg> argv(nmatch); \
++ std::vector<RE2::Arg *> args(nmatch); \
+ bool retval; \
+ for (int i=0; i<nmatch; ++i) { \
+ argv[i] = &strv[i]; \
+ args[i] = &argv[i]; \
+ } \
+- retval = RE2::FUN(&input, pattern, args, nmatch); \
++ retval = RE2::FUN(&input, pattern, args.data(), nmatch); \
+ if (retval) { \
+ text->data = input.data(); \
+ text->length = input.length(); \
+@@ -335,15 +336,15 @@ DEFINE_MATCH_ZSTRING_FUN2(cre2_find_and_
+ cre2_string_t * match, int nmatch) \
+ { \
+ re2::StringPiece input(text->data, text->length); \
+- re2::StringPiece strv[nmatch]; \
+- RE2::Arg argv[nmatch]; \
+- RE2::Arg * args[nmatch]; \
++ std::vector<re2::StringPiece> strv(nmatch); \
++ std::vector<RE2::Arg> argv(nmatch); \
++ std::vector<RE2::Arg *> args(nmatch); \
+ bool retval; \
+ for (int i=0; i<nmatch; ++i) { \
+ argv[i] = &strv[i]; \
+ args[i] = &argv[i]; \
+ } \
+- retval = RE2::FUN(input, *TO_RE2(rex), args, nmatch); \
++ retval = RE2::FUN(input, *TO_RE2(rex), args.data(), nmatch); \
+ if (retval) { \
+ for (int i=0; i<nmatch; ++i) { \
+ match[i].data = strv[i].data(); \
+@@ -364,15 +365,15 @@ DEFINE_MATCH_REX_FUN(cre2_partial_match_
+ cre2_string_t * match, int nmatch) \
+ { \
+ re2::StringPiece input(text->data, text->length); \
+- re2::StringPiece strv[nmatch]; \
+- RE2::Arg argv[nmatch]; \
+- RE2::Arg * args[nmatch]; \
++ std::vector<re2::StringPiece> strv(nmatch); \
++ std::vector<RE2::Arg> argv(nmatch); \
++ std::vector<RE2::Arg *> args(nmatch); \
+ bool retval; \
+ for (int i=0; i<nmatch; ++i) { \
+ argv[i] = &strv[i]; \
+ args[i] = &argv[i]; \
+ } \
+- retval = RE2::FUN(&input, *TO_RE2(rex), args, nmatch); \
++ retval = RE2::FUN(&input, *TO_RE2(rex), args.data(), nmatch); \
+ if (retval) { \
+ text->data = input.data(); \
+ text->length = input.length(); \