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;
}