com php-src: Fix #72691: mb_ereg_search raises a warn ing if a match zero-width: NEWS ext/mbstring/php _mbregex.c ext/mbstring/tests/bug72691.phpt
| From: | Christoph Michael Becker | Date: | Thu, 28 Jul 2016 11:07:05 +0000 |
| Subject: | com php-src: Fix #72691: mb_ereg_search raises a warn ing if a match zero-width: NEWS ext/mbstring/php _mbregex.c ext/mbstring/tests/bug72691.phpt | ||
| Groups: | php.cvs | ||
| Request: | Send a blank email to php-cvs+get-93447@lists.php.net to get a copy of this message | ||
Commit: d276e6a8386a68d57d5dd07c3d7e15de4b03c6b3
Author: Christoph M. Becker <cmb@php.net> Thu, 28 Jul 2016 13:07:05 +0200
Parents: 0ae8c337a340d16e1b9891d564a49bbf91ecfbd9
Branches: PHP-5.6 PHP-7.0 PHP-7.1 master
Link: http://git.php.net/?p=php-src.git;a=commitdiff;h=d276e6a8386a68d57d5dd07c3d7e15de4b03c6b3
Log:
Fix #72691: mb_ereg_search raises a warning if a match zero-width
That warning doesn't make sense (PCRE doesn't throw such a warning either),
so we remove it.
Bugs:
https://bugs.php.net/72691
Changed paths:
M NEWS
M ext/mbstring/php_mbregex.c
A ext/mbstring/tests/bug72691.phpt
Diff:
diff --git a/NEWS b/NEWS
index 3ab22a8..962be02 100644
--- a/NEWS
+++ b/NEWS
@@ -40,6 +40,11 @@ PHP NEWS
- Intl:
. Partially fixed #72506 (idn_to_ascii for UTS #46 incorrect for long domain
names). (cmb)
+
+- mbstring:
+ . Fixed bug #72691 (mb_ereg_search raises a warning if a match zero-width).
+ (cmb)
+
- PCRE:
.. Fixed bug #72688 (preg_match missing group names in matches). (cmb)
diff --git a/ext/mbstring/php_mbregex.c b/ext/mbstring/php_mbregex.c
index 67951a8..3509165 100644
--- a/ext/mbstring/php_mbregex.c
+++ b/ext/mbstring/php_mbregex.c
@@ -1235,9 +1235,6 @@ _php_mb_regex_ereg_search_exec(INTERNAL_FUNCTION_PARAMETERS, int mode)
php_error_docref(NULL TSRMLS_CC, E_WARNING, "mbregex search failure in mbregex_search():
%s", err_str);
RETVAL_FALSE;
} else {
- if (MBREX(search_regs)->beg[0] == MBREX(search_regs)->end[0]) {
- php_error_docref(NULL TSRMLS_CC, E_WARNING, "Empty regular expression");
- }
switch (mode) {
case 1:
array_init(return_value);
diff --git a/ext/mbstring/tests/bug72691.phpt b/ext/mbstring/tests/bug72691.phpt
new file mode 100644
index 0000000..d914a50
--- /dev/null
+++ b/ext/mbstring/tests/bug72691.phpt
@@ -0,0 +1,48 @@
+--TEST--
+Bug #72691 (mb_ereg_search raises a warning if a match zero-width)
+--SKIPIF--
+<?php
+if (!extension_loaded('mbstring')) die('skip ext/mbstring required');
+?>
+--FILE--
+<?php
+$str = 'foo';
+mb_ereg_search_init($str);
+
+mb_ereg_search('\A');
+var_dump(mb_ereg_search_getpos());
+var_dump(mb_ereg_search_getregs());
+
+mb_ereg_search('\s*');
+var_dump(mb_ereg_search_getpos());
+var_dump(mb_ereg_search_getregs());
+
+mb_ereg_search('\w+');
+var_dump(mb_ereg_search_getpos());
+var_dump(mb_ereg_search_getregs());
+
+mb_ereg_search('\Z');
+var_dump(mb_ereg_search_getpos());
+var_dump(mb_ereg_search_getregs());
+?>
+--EXPECT--
+int(1)
+array(1) {
+ [0]=>
+ string(0) ""
+}
+int(2)
+array(1) {
+ [0]=>
+ string(0) ""
+}
+int(3)
+array(1) {
+ [0]=>
+ string(1) "o"
+}
+int(4)
+array(1) {
+ [0]=>
+ string(0) ""
+}