From: Nikita Popov Date: Thu, 20 Jul 2017 18:38:11 +0000 (+0200) Subject: Use fast zpp in mb_strlen() X-Git-Tag: php-7.3.0alpha1~1863 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=1388751f10799a240fa4cd62285c3b5c7acb235b;p=php Use fast zpp in mb_strlen() For short strings this function is now sufficiently fast for zpp to be a bottleneck. --- diff --git a/ext/mbstring/mbstring.c b/ext/mbstring/mbstring.c index 97e9bfcec3..17122dd614 100644 --- a/ext/mbstring/mbstring.c +++ b/ext/mbstring/mbstring.c @@ -2338,15 +2338,19 @@ PHP_FUNCTION(mb_strlen) { int n; mbfl_string string; - char *enc_name = NULL; - size_t enc_name_len; + char *str, *enc_name = NULL; + size_t str_len, enc_name_len; mbfl_string_init(&string); - if (zend_parse_parameters(ZEND_NUM_ARGS(), "s|s", (char **)&string.val, &string.len, &enc_name, &enc_name_len) == FAILURE) { - return; - } + ZEND_PARSE_PARAMETERS_START(1, 2) + Z_PARAM_STRING(str, str_len) + Z_PARAM_OPTIONAL + Z_PARAM_STRING(enc_name, enc_name_len) + ZEND_PARSE_PARAMETERS_END(); + string.val = (unsigned char *) str; + string.len = str_len; string.no_language = MBSTRG(language); string.encoding = php_mb_get_encoding(enc_name); if (!string.encoding) {