summaryrefslogtreecommitdiff
path: root/dev-lang/php/files/php-5.6-intl-icu-memory-corruption.patch
diff options
context:
space:
mode:
Diffstat (limited to 'dev-lang/php/files/php-5.6-intl-icu-memory-corruption.patch')
-rw-r--r--dev-lang/php/files/php-5.6-intl-icu-memory-corruption.patch88
1 files changed, 0 insertions, 88 deletions
diff --git a/dev-lang/php/files/php-5.6-intl-icu-memory-corruption.patch b/dev-lang/php/files/php-5.6-intl-icu-memory-corruption.patch
deleted file mode 100644
index 1b18f7fc5c44..000000000000
--- a/dev-lang/php/files/php-5.6-intl-icu-memory-corruption.patch
+++ /dev/null
@@ -1,88 +0,0 @@
-Based on the following upstream commits:
-
-https://github.com/php/php-src/commit/45a05f38410d4a67c8c83c09906e2cfb42fc6e4c
-https://github.com/php/php-src/commit/534684d1042978f3c21caf9b665a7aca27f3f325
-
---- a/ext/intl/msgformat/msgformat_helpers.cpp
-+++ b/ext/intl/msgformat/msgformat_helpers.cpp
-@@ -27,6 +27,7 @@
- #include <unicode/timezone.h>
- #include <unicode/datefmt.h>
- #include <unicode/calendar.h>
-+#include <unicode/strenum.h>
-
- #include <vector>
-
-@@ -45,6 +46,7 @@ extern "C" {
-
- #if U_ICU_VERSION_MAJOR_NUM * 10 + U_ICU_VERSION_MINOR_NUM >= 48
- #define HAS_MESSAGE_PATTERN 1
-+#define HAS_MISALLOCATE_MEMORY_BUG 1
- #endif
-
- U_NAMESPACE_BEGIN
-@@ -345,6 +347,26 @@ static void umsg_set_timezone(MessageFormatter_object *mfo,
- return; /* already done */
- }
-
-+#ifdef HAS_MISALLOCATE_MEMORY_BUG
-+ /* There is a bug in ICU which prevents MessageFormatter::getFormats()
-+ to handle more than 10 formats correctly. The enumerator could be
-+ used to walk through the present formatters using getFormat(), which
-+ however seems to provide just a readonly access. This workaround
-+ prevents crash when there are > 10 formats but doesn't set any error.
-+ As a result, only DateFormatters with > 10 subformats are affected.
-+ This workaround should be ifdef'd out, when the bug has been fixed
-+ in ICU. */
-+ icu::StringEnumeration* fnames = mf->getFormatNames(err.code);
-+ if (!fnames || U_FAILURE(err.code)) {
-+ return;
-+ }
-+ count = fnames->count(err.code);
-+ delete fnames;
-+ if (count > 10) {
-+ return;
-+ }
-+#endif
-+
- formats = mf->getFormats(count);
-
- if (formats == NULL) {
---- /dev/null
-+++ b/ext/intl/tests/bug74484_MessageFormatter.phpt
-@@ -0,0 +1,35 @@
-+--TEST--
-+Bug #74484 MessageFormatter::formatMessage memory corruption with 11+ named placeholder
-+--SKIPIF--
-+<?php
-+if (!extension_loaded('intl'))
-+ die('skip intl extension not enabled');
-+if (version_compare(INTL_ICU_VERSION, '4.8') < 0)
-+ die('skip for ICU 4.8+');
-+?>
-+--FILE--
-+<?php
-+$text = "{a} {b} {c} {d} {e} {f} {g} {h} {i} {j} {k} {l}";
-+
-+$vars = array(
-+ 'a' => 1,
-+ 'b' => 2,
-+ 'c' => 3,
-+ 'd' => 4,
-+ 'e' => 5,
-+ 'f' => 6,
-+ 'g' => 7,
-+ 'h' => 8,
-+ 'i' => 9,
-+ 'j' => 10,
-+ 'k' => 11,
-+ 'l' => 12
-+);
-+
-+var_dump(MessageFormatter::formatMessage('en_US', $text, $vars));
-+
-+?>
-+==DONE==
-+--EXPECT--
-+string(26) "1 2 3 4 5 6 7 8 9 10 11 12"
-+==DONE==