From: Dmitry Stogov Date: Fri, 18 Aug 2017 11:56:28 +0000 (+0300) Subject: Fixed bug #75089 (preg_grep() is not reporting PREG_BAD_UTF8_ERROR after first input... X-Git-Tag: php-7.2.0RC1~43 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=ef90e37bd15db5ecea57e03ad72a53acd844b706;p=php Fixed bug #75089 (preg_grep() is not reporting PREG_BAD_UTF8_ERROR after first input string) --- diff --git a/NEWS b/NEWS index 5bc93fad6b..614e74e3a6 100644 --- a/NEWS +++ b/NEWS @@ -2,6 +2,9 @@ PHP NEWS ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| ?? ??? ????, PHP 7.2.0RC1 +- PCRE: + . Fixed bug #75089 (preg_grep() is not reporting PREG_BAD_UTF8_ERROR after + first input string). (Dmitry) 17 Aug 2017, PHP 7.2.0beta3 diff --git a/ext/pcre/php_pcre.c b/ext/pcre/php_pcre.c index 750e720d74..44b5ff55b0 100644 --- a/ext/pcre/php_pcre.c +++ b/ext/pcre/php_pcre.c @@ -2537,7 +2537,7 @@ PHPAPI void php_pcre_grep_impl(pcre_cache_entry *pce, zval *input, zval *return int *offsets; /* Array of subpattern offsets */ int size_offsets; /* Size of the offsets array */ int count = 0; /* Count of matched subpatterns */ - int no_utf_check = 0; /* Execution options */ + int no_utf_check; /* Execution options */ zend_string *string_key; zend_ulong num_key; zend_bool invert; /* Whether to return non-matching @@ -2569,18 +2569,13 @@ PHPAPI void php_pcre_grep_impl(pcre_cache_entry *pce, zval *input, zval *return PCRE_G(error_code) = PHP_PCRE_NO_ERROR; -#ifdef HAVE_PCRE_JIT_SUPPORT - if (!(pce->compile_options & PCRE_UTF8)) { - no_utf_check = PCRE_NO_UTF8_CHECK; - } -#endif - /* Go through the input array */ ZEND_HASH_FOREACH_KEY_VAL(Z_ARRVAL_P(input), num_key, string_key, entry) { zend_string *subject_str = zval_get_string(entry); /* Perform the match */ #ifdef HAVE_PCRE_JIT_SUPPORT + no_utf_check = (pce->compile_options & PCRE_UTF8) ? 0 : PCRE_NO_UTF8_CHECK; if ((extra->flags & PCRE_EXTRA_EXECUTABLE_JIT) && no_utf_check) { count = pcre_jit_exec(pce->re, extra, ZSTR_VAL(subject_str), diff --git a/ext/pcre/tests/bug75089.phpt b/ext/pcre/tests/bug75089.phpt new file mode 100644 index 0000000000..dd0ec16246 --- /dev/null +++ b/ext/pcre/tests/bug75089.phpt @@ -0,0 +1,9 @@ +--TEST-- +Bug #75089 (preg_grep() is not reporting PREG_BAD_UTF8_ERROR after first input string) +--FILE-- + +--EXPECT-- +int(4)