diff options
author | Christoph M. Becker <cmbecker69@gmx.de> | 2020-03-13 15:48:53 +0100 |
---|---|---|
committer | Christoph M. Becker <cmbecker69@gmx.de> | 2020-03-27 10:34:16 +0100 |
commit | 9e77d5a9da9e80a1bfe226f60ccb12fd8bf9481c (patch) | |
tree | 14fd42aa401d1a007a0c5ca85382b7eb26015d6a | |
parent | 150df5b17c371f6e6a552b88435afaca0d1ad096 (diff) | |
download | php-git-9e77d5a9da9e80a1bfe226f60ccb12fd8bf9481c.tar.gz |
Fix #76999: mb_regex_set_options() return current options
When setting new options, `mb_regex_set_options()` is supposed to
return the *previous* options.
-rw-r--r-- | NEWS | 1 | ||||
-rw-r--r-- | ext/mbstring/php_mbregex.c | 8 | ||||
-rw-r--r-- | ext/mbstring/tests/bug76999.phpt | 22 |
3 files changed, 28 insertions, 3 deletions
@@ -56,6 +56,7 @@ PHP NEWS . Removed deprecated ldap_sort. (mcmic) - MBString: + . Fixed bug #76999 (mb_regex_set_options() return current options). (cmb) . Removed the unused $is_hex parameter from mb_decode_numericentity(). (cmb) - MySQLi: diff --git a/ext/mbstring/php_mbregex.c b/ext/mbstring/php_mbregex.c index ceda96398e..bcdff2c4c9 100644 --- a/ext/mbstring/php_mbregex.c +++ b/ext/mbstring/php_mbregex.c @@ -1682,8 +1682,8 @@ static void _php_mb_regex_set_options(OnigOptionType options, OnigSyntaxType *sy Set or get the default options for mbregex functions */ PHP_FUNCTION(mb_regex_set_options) { - OnigOptionType opt; - OnigSyntaxType *syntax; + OnigOptionType opt, prev_opt; + OnigSyntaxType *syntax, *prev_syntax; char *string = NULL; size_t string_len; char buf[16]; @@ -1696,7 +1696,9 @@ PHP_FUNCTION(mb_regex_set_options) opt = 0; syntax = NULL; _php_mb_regex_init_options(string, string_len, &opt, &syntax, NULL); - _php_mb_regex_set_options(opt, syntax, NULL, NULL); + _php_mb_regex_set_options(opt, syntax, &prev_opt, &prev_syntax); + opt = prev_opt; + syntax = prev_syntax; } else { opt = MBREX(regex_default_options); syntax = MBREX(regex_default_syntax); diff --git a/ext/mbstring/tests/bug76999.phpt b/ext/mbstring/tests/bug76999.phpt new file mode 100644 index 0000000000..5ba9f0e8e3 --- /dev/null +++ b/ext/mbstring/tests/bug76999.phpt @@ -0,0 +1,22 @@ +--TEST-- +Bug #76999 (mb_regex_set_options() return current options) +--SKIPIF-- +<?php +if (!extension_loaded('mbstring')) die('skip mbstring extension not available'); +if (!function_exists('mb_regex_set_options')) die('skip mb_regex_set_options() not available'); +?> +--FILE-- +<?php +mb_regex_set_options("pr"); +var_dump(mb_regex_set_options("m")); +var_dump(mb_regex_set_options("mdi")); +var_dump(mb_regex_set_options("m")); +var_dump(mb_regex_set_options("a")); +var_dump(mb_regex_set_options()); +?> +--EXPECT-- +string(2) "pr" +string(2) "mr" +string(3) "imd" +string(2) "mr" +string(1) "r" |