Commit e1e38e1ff89 for php.net

commit e1e38e1ff89574ccf4fae1e394aebf510321dc9c
Author: Tim Düsterhus <tim@bastelstu.be>
Date:   Fri Mar 27 20:05:33 2026 +0100

    zend_string: Simplify `zend_string_concat[23]` with `zend_mempcpy` (#21556)

diff --git a/Zend/zend_string.c b/Zend/zend_string.c
index ad4b9d2d6cd..348f37999ef 100644
--- a/Zend/zend_string.c
+++ b/Zend/zend_string.c
@@ -477,9 +477,10 @@ ZEND_API zend_string *zend_string_concat2(
 	size_t len = str1_len + str2_len;
 	zend_string *res = zend_string_alloc(len, 0);

-	memcpy(ZSTR_VAL(res), str1, str1_len);
-	memcpy(ZSTR_VAL(res) + str1_len, str2, str2_len);
-	ZSTR_VAL(res)[len] = '\0';
+	char *p = ZSTR_VAL(res);
+	p = zend_mempcpy(p, str1, str1_len);
+	p = zend_mempcpy(p, str2, str2_len);
+	*p++ = '\0';

 	return res;
 }
@@ -492,10 +493,11 @@ ZEND_API zend_string *zend_string_concat3(
 	size_t len = str1_len + str2_len + str3_len;
 	zend_string *res = zend_string_alloc(len, 0);

-	memcpy(ZSTR_VAL(res), str1, str1_len);
-	memcpy(ZSTR_VAL(res) + str1_len, str2, str2_len);
-	memcpy(ZSTR_VAL(res) + str1_len + str2_len, str3, str3_len);
-	ZSTR_VAL(res)[len] = '\0';
+	char *p = ZSTR_VAL(res);
+	p = zend_mempcpy(p, str1, str1_len);
+	p = zend_mempcpy(p, str2, str2_len);
+	p = zend_mempcpy(p, str3, str3_len);
+	*p++ = '\0';

 	return res;
 }