diff options
author | Anatol Belski <ab@php.net> | 2018-09-08 21:35:23 +0200 |
---|---|---|
committer | Anatol Belski <ab@php.net> | 2018-09-08 21:35:23 +0200 |
commit | c6ddd45650c295bdf800c600e89a15c0af9a1e09 (patch) | |
tree | c888f70b86356338f9cf1ba3554735507b4045d8 | |
parent | 58e2f5ead162280e124d41c9b9bc2e9cb3660b06 (diff) | |
download | php-git-c6ddd45650c295bdf800c600e89a15c0af9a1e09.tar.gz |
Fixed bug #76850 Exit code mangled by set locale/preg_match
-rw-r--r-- | ext/pcre/php_pcre.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/ext/pcre/php_pcre.c b/ext/pcre/php_pcre.c index b9213d4909..3910b41fea 100644 --- a/ext/pcre/php_pcre.c +++ b/ext/pcre/php_pcre.c @@ -729,6 +729,7 @@ PHPAPI pcre_cache_entry* pcre_get_compiled_regex_cache(zend_string *regex) if (key != regex) { tables = (uint8_t *)zend_hash_find_ptr(&char_tables, BG(locale_string)); if (!tables) { + zend_string *_k; tables = pcre2_maketables(gctx); if (UNEXPECTED(!tables)) { php_error_docref(NULL,E_WARNING, "Failed to generate locale character tables"); @@ -737,7 +738,9 @@ PHPAPI pcre_cache_entry* pcre_get_compiled_regex_cache(zend_string *regex) efree(pattern); return NULL; } - zend_hash_add_ptr(&char_tables, BG(locale_string), (void *)tables); + _k = zend_string_dup(BG(locale_string), 1); + zend_hash_add_ptr(&char_tables, _k, (void *)tables); + zend_string_release(_k); } pcre2_set_character_tables(cctx, tables); } |