From c2d4bafc4fb9f95cd958fd43ea74cbc7ebc4d276 Mon Sep 17 00:00:00 2001 From: Niels Dossche <7771979+nielsdos@users.noreply.github.com> Date: Fri, 3 Feb 2023 20:48:04 +0100 Subject: [PATCH] Copy UTF-8 flag for str_repeat --- ext/standard/string.c | 1 + ext/zend_test/tests/strings_marked_as_utf8.phpt | 11 +++++++++++ 2 files changed, 12 insertions(+) diff --git a/ext/standard/string.c b/ext/standard/string.c index 622ed3a9d43..881e172c6c2 100644 --- a/ext/standard/string.c +++ b/ext/standard/string.c @@ -5059,6 +5059,7 @@ PHP_FUNCTION(str_repeat) /* Initialize the result string */ result = zend_string_safe_alloc(ZSTR_LEN(input_str), mult, 0, 0); result_len = ZSTR_LEN(input_str) * mult; + ZSTR_COPY_CONCAT_PROPERTIES(result, input_str); /* Heavy optimization for situations where input string is 1 byte long */ if (ZSTR_LEN(input_str) == 1) { diff --git a/ext/zend_test/tests/strings_marked_as_utf8.phpt b/ext/zend_test/tests/strings_marked_as_utf8.phpt index 5b6dfb6a076..1519459f1da 100644 --- a/ext/zend_test/tests/strings_marked_as_utf8.phpt +++ b/ext/zend_test/tests/strings_marked_as_utf8.phpt @@ -107,6 +107,14 @@ $s = $o . $o; var_dump($s); var_dump(zend_test_is_string_marked_as_valid_utf8($s)); +echo "str_repeat:\n"; +$string = "a"; +$string_concat = str_repeat($string, 100); +var_dump(zend_test_is_string_marked_as_valid_utf8($string_concat)); +$string = "\xff"; +$string_concat = str_repeat($string, 100); +var_dump(zend_test_is_string_marked_as_valid_utf8($string_concat)); + ?> --EXPECT-- Empty strings: @@ -148,3 +156,6 @@ bool(true) Concatenation of objects: string(2) "zz" bool(true) +str_repeat: +bool(true) +bool(false)