diff options
-rw-r--r-- | ext/mbstring/php_mbregex.c | 22 | ||||
-rw-r--r-- | ext/mbstring/tests/mb_ereg1.phpt | 5 | ||||
-rw-r--r-- | ext/mbstring/tests/mb_ereg_variation1.phpt | 7 |
3 files changed, 12 insertions, 22 deletions
diff --git a/ext/mbstring/php_mbregex.c b/ext/mbstring/php_mbregex.c index 3307cfd9cf..73d3ee3618 100644 --- a/ext/mbstring/php_mbregex.c +++ b/ext/mbstring/php_mbregex.c @@ -853,16 +853,16 @@ PHP_FUNCTION(mb_regex_encoding) /* {{{ _php_mb_regex_ereg_exec */ static void _php_mb_regex_ereg_exec(INTERNAL_FUNCTION_PARAMETERS, int icase) { - zval *arg_pattern, *array = NULL; - char *string; - size_t string_len; + zval *array = NULL; + char *arg_pattern, *string; + size_t arg_pattern_len, string_len; php_mb_regex_t *re; OnigRegion *regs = NULL; int i, match_len, beg, end; OnigOptionType options; char *str; - if (zend_parse_parameters(ZEND_NUM_ARGS(), "zs|z", &arg_pattern, &string, &string_len, &array) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS(), "ss|z", &arg_pattern, &arg_pattern_len, &string, &string_len, &array) == FAILURE) { RETURN_FALSE; } @@ -886,23 +886,13 @@ static void _php_mb_regex_ereg_exec(INTERNAL_FUNCTION_PARAMETERS, int icase) options |= ONIG_OPTION_IGNORECASE; } - /* compile the regular expression from the supplied regex */ - if (Z_TYPE_P(arg_pattern) != IS_STRING) { - /* we convert numbers to integers and treat them as a string */ - if (Z_TYPE_P(arg_pattern) == IS_DOUBLE) { - convert_to_long_ex(arg_pattern); /* get rid of decimal places */ - } - convert_to_string_ex(arg_pattern); - /* don't bother doing an extended regex with just a number */ - } - - if (Z_STRLEN_P(arg_pattern) == 0) { + if (arg_pattern_len == 0) { php_error_docref(NULL, E_WARNING, "empty pattern"); RETVAL_FALSE; goto out; } - re = php_mbregex_compile_pattern(Z_STRVAL_P(arg_pattern), Z_STRLEN_P(arg_pattern), options, MBREX(current_mbctype), MBREX(regex_default_syntax)); + re = php_mbregex_compile_pattern(arg_pattern, arg_pattern_len, options, MBREX(current_mbctype), MBREX(regex_default_syntax)); if (re == NULL) { RETVAL_FALSE; goto out; diff --git a/ext/mbstring/tests/mb_ereg1.phpt b/ext/mbstring/tests/mb_ereg1.phpt index 59ef788a77..85db1d1c98 100644 --- a/ext/mbstring/tests/mb_ereg1.phpt +++ b/ext/mbstring/tests/mb_ereg1.phpt @@ -43,7 +43,7 @@ array(3) { } } -Notice: Array to string conversion in %s on line %d +Warning: mb_ereg() expects parameter 1 to be string, array given in %s on line %d bool(false) array(3) { [0]=> @@ -52,8 +52,7 @@ array(3) { [1]=> int(1) [2]=> - array(0) { - } + string(0) "" } Warning: mb_ereg() expects parameter 2 to be string, array given in %s on line %d diff --git a/ext/mbstring/tests/mb_ereg_variation1.phpt b/ext/mbstring/tests/mb_ereg_variation1.phpt index 60baf8743e..2ee33c9e80 100644 --- a/ext/mbstring/tests/mb_ereg_variation1.phpt +++ b/ext/mbstring/tests/mb_ereg_variation1.phpt @@ -89,7 +89,7 @@ fclose($fp); echo "Done"; ?> ---EXPECT-- +--EXPECTF-- *** Testing mb_ereg() : usage variations *** -- Iteration 1 -- @@ -172,7 +172,8 @@ array(0) { } -- Iteration 16 -- + +Warning: mb_ereg() expects parameter 1 to be string, resource given in %s on line %d bool(false) -array(0) { -} +NULL Done |