From 1388751f10799a240fa4cd62285c3b5c7acb235b Mon Sep 17 00:00:00 2001 From: Nikita Popov Date: Thu, 20 Jul 2017 20:38:11 +0200 Subject: [PATCH] Use fast zpp in mb_strlen() For short strings this function is now sufficiently fast for zpp to be a bottleneck. --- ext/mbstring/mbstring.c | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) 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) { -- 2.50.1