summaryrefslogtreecommitdiff
path: root/ext/mbstring
diff options
context:
space:
mode:
authorChristoph M. Becker <cmb@php.net>2016-07-28 14:08:31 +0200
committerChristoph M. Becker <cmb@php.net>2016-07-28 14:09:29 +0200
commit6aaef1ed346fcc7f9dad58e47f6418d36c3cbe73 (patch)
treeed0c53b96864eb5fa4a148a61d80021e1bcaaada /ext/mbstring
parentdb69ea32cb283641eba86742de36d7eb9bd485ea (diff)
parenta621023168ee00104dac20c996df3c9e8ad8edcf (diff)
downloadphp-git-6aaef1ed346fcc7f9dad58e47f6418d36c3cbe73.tar.gz
Merge branch 'PHP-7.0' into PHP-7.1
Diffstat (limited to 'ext/mbstring')
-rw-r--r--ext/mbstring/php_mbregex.c2
-rw-r--r--ext/mbstring/tests/bug72691.phpt8
-rw-r--r--ext/mbstring/tests/bug72693.phpt41
3 files changed, 46 insertions, 5 deletions
diff --git a/ext/mbstring/php_mbregex.c b/ext/mbstring/php_mbregex.c
index a361874729..3b5e857289 100644
--- a/ext/mbstring/php_mbregex.c
+++ b/ext/mbstring/php_mbregex.c
@@ -1297,7 +1297,7 @@ _php_mb_regex_ereg_search_exec(INTERNAL_FUNCTION_PARAMETERS, int mode)
break;
}
end = MBREX(search_regs)->end[0];
- if (pos < end) {
+ if (pos <= end) {
MBREX(search_pos) = end;
} else {
MBREX(search_pos) = pos + 1;
diff --git a/ext/mbstring/tests/bug72691.phpt b/ext/mbstring/tests/bug72691.phpt
index d914a508e0..08f6b153da 100644
--- a/ext/mbstring/tests/bug72691.phpt
+++ b/ext/mbstring/tests/bug72691.phpt
@@ -26,12 +26,12 @@ var_dump(mb_ereg_search_getpos());
var_dump(mb_ereg_search_getregs());
?>
--EXPECT--
-int(1)
+int(0)
array(1) {
[0]=>
string(0) ""
}
-int(2)
+int(0)
array(1) {
[0]=>
string(0) ""
@@ -39,9 +39,9 @@ array(1) {
int(3)
array(1) {
[0]=>
- string(1) "o"
+ string(3) "foo"
}
-int(4)
+int(3)
array(1) {
[0]=>
string(0) ""
diff --git a/ext/mbstring/tests/bug72693.phpt b/ext/mbstring/tests/bug72693.phpt
new file mode 100644
index 0000000000..f269e57f0f
--- /dev/null
+++ b/ext/mbstring/tests/bug72693.phpt
@@ -0,0 +1,41 @@
+--TEST--
+Bug #72693 (mb_ereg_search increments search position when a match zero-width)
+--SKIPIF--
+<?php
+if (!extension_loaded('mbstring')) die('skip ext/mbstring required');
+?>
+--FILE--
+<?php
+mb_ereg_search_init('foo');
+
+var_dump(mb_ereg_search('\A'));
+var_dump(mb_ereg_search_getpos());
+
+var_dump(mb_ereg_search('\s*'));
+var_dump(mb_ereg_search_getpos());
+
+var_dump(mb_ereg_search('\w+'));
+var_dump(mb_ereg_search_getpos());
+var_dump(mb_ereg_search_getregs());
+
+var_dump(mb_ereg_search('\s*'));
+var_dump(mb_ereg_search_getpos());
+
+var_dump(mb_ereg_search('\Z'));
+var_dump(mb_ereg_search_getpos());
+?>
+--EXPECT--
+bool(true)
+int(0)
+bool(true)
+int(0)
+bool(true)
+int(3)
+array(1) {
+ [0]=>
+ string(3) "foo"
+}
+bool(true)
+int(3)
+bool(true)
+int(3)