diff options
author | Christoph M. Becker <cmb@php.net> | 2016-07-28 14:08:31 +0200 |
---|---|---|
committer | Christoph M. Becker <cmb@php.net> | 2016-07-28 14:09:29 +0200 |
commit | 6aaef1ed346fcc7f9dad58e47f6418d36c3cbe73 (patch) | |
tree | ed0c53b96864eb5fa4a148a61d80021e1bcaaada /ext/mbstring | |
parent | db69ea32cb283641eba86742de36d7eb9bd485ea (diff) | |
parent | a621023168ee00104dac20c996df3c9e8ad8edcf (diff) | |
download | php-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.c | 2 | ||||
-rw-r--r-- | ext/mbstring/tests/bug72691.phpt | 8 | ||||
-rw-r--r-- | ext/mbstring/tests/bug72693.phpt | 41 |
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) |