[php-src] master: ext/mbstring: Validate and flag UTF-8 in mb_strlen() to improve performance (#24024)

From: Date: Wed, 30 Sep 2026 17:19:46 +0000
Subject: [php-src] master: ext/mbstring: Validate and flag UTF-8 in mb_strlen() to improve performance (#24024)
Groups: php.cvs 
Request: Send a blank email to php-cvs+get-141810@lists.php.net to get a copy of this message
Author: Kamil Tekiela (kamil-tekiela) Committer: GitHub (web-flow) Pusher: kamil-tekiela Date: 2026-09-30T18:19:43+01:00 Commit: https://github.com/php/php-src/commit/896653dbd2748af42a76538c53959980411e68a6 Raw diff: https://github.com/php/php-src/commit/896653dbd2748af42a76538c53959980411e68a6.diff ext/mbstring: Validate and flag UTF-8 in mb_strlen() to improve performance (#24024) Changed paths: M UPGRADING M ext/mbstring/mbstring.c Diff: diff --git a/UPGRADING b/UPGRADING index c46af00cfe25..9692bfd9b2cc 100644 --- a/UPGRADING +++ b/UPGRADING @@ -89,3 +89,6 @@ PHP 8.7 UPGRADE NOTES . Improved performance of array_splice() when inserting without removing elements. . Improved performance of str_rot13(). + +- MBString: + . Improved performance of mb_strlen for UTF-8 strings. diff --git a/ext/mbstring/mbstring.c b/ext/mbstring/mbstring.c index c701a23183bb..1fbb9e524150 100644 --- a/ext/mbstring/mbstring.c +++ b/ext/mbstring/mbstring.c @@ -1836,7 +1836,7 @@ static size_t mb_get_strlen(zend_string *string, const mbfl_encoding *encoding) unsigned int char_len = encoding->flag & (MBFL_ENCTYPE_SBCS | MBFL_ENCTYPE_WCS2 | MBFL_ENCTYPE_WCS4); if (char_len) { return ZSTR_LEN(string) / char_len; - } else if (php_mb_is_no_encoding_utf8(encoding->no_encoding) && ZSTR_IS_VALID_UTF8(string)) { + } else if (php_mb_is_no_encoding_utf8(encoding->no_encoding) && mb_check_str_encoding(string, &mbfl_encoding_utf8)) { return mb_fast_strlen_utf8((unsigned char*)ZSTR_VAL(string), ZSTR_LEN(string)); }

« previous php.cvs (#141810) next »