com php-src: Fixed bug #75089 (preg_grep() is not reporting PREG_BAD_UTF8_ERROR after first in put string): NEWS ext/pcre/php_pcre.c ext/pcre/
tests/bug75089.phpt
| From: | Dmitry Stogov | Date: | Fri, 18 Aug 2017 11:56:28 +0000 |
| Subject: | com php-src: Fixed bug #75089 (preg_grep() is not reporting PREG_BAD_UTF8_ERROR after first in put string): NEWS ext/pcre/php_pcre.c ext/pcre/ tests/bug75089.phpt |
||
| Groups: | php.cvs | ||
| Request: | Send a blank email to php-cvs+get-99085@lists.php.net to get a copy of this message | ||
Commit: ef90e37bd15db5ecea57e03ad72a53acd844b706
Author: Dmitry Stogov <dmitry@zend.com> Fri, 18 Aug 2017 14:56:28 +0300
Parents: 6c3c88074c43ac869701bbb1d61e9fea2e7417f6
Branches: PHP-7.2 master
Link: http://git.php.net/?p=php-src.git;a=commitdiff;h=ef90e37bd15db5ecea57e03ad72a53acd844b706
Log:
Fixed bug #75089 (preg_grep() is not reporting PREG_BAD_UTF8_ERROR after first input string)
Bugs:
https://bugs.php.net/75089
Changed paths:
M NEWS
M ext/pcre/php_pcre.c
A ext/pcre/tests/bug75089.phpt
Diff:
diff --git a/NEWS b/NEWS
index 5bc93fa..614e74e 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 750e720...44b5ff5 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 0000000..dd0ec16
--- /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--
+<?php
+preg_grep('#\d#u', ['a', "1\xFF"/*, 'c'*/]);
+var_dump(preg_last_error());
+?>
+--EXPECT--
+int(4)