Commit b0aa6b9626a for php.net

commit b0aa6b9626a71dd865a573ef14eeb76fe6a6a372
Author: David CARLIER <devnexen@gmail.com>
Date:   Thu Mar 12 17:56:43 2026 +0000

    ext/soap: various optimisations

    * replace strcat/strncpy with memcpy for pre-allocated buffers.
    * remove redundant memset before struct copy.

diff --git a/ext/soap/php_http.c b/ext/soap/php_http.c
index 4bf599234f7..bac21d26b35 100644
--- a/ext/soap/php_http.c
+++ b/ext/soap/php_http.c
@@ -1168,18 +1168,12 @@ int make_http_soap_request(
 							char *t = ZSTR_VAL(new_uri->path);
 							char *p = strrchr(t, '/');
 							if (p) {
-								zend_string *s = zend_string_alloc((p - t) + ZSTR_LEN(new_uri->path) + 2, 0);
-								strncpy(ZSTR_VAL(s), t, (p - t) + 1);
-								ZSTR_VAL(s)[(p - t) + 1] = 0;
-								strcat(ZSTR_VAL(s), ZSTR_VAL(new_uri->path));
+								zend_string *s = zend_string_concat2(t, (p - t) + 1, ZSTR_VAL(new_uri->path), ZSTR_LEN(new_uri->path));
 								zend_string_release_ex(new_uri->path, 0);
 								new_uri->path = s;
 							}
 						} else {
-							zend_string *s = zend_string_alloc(ZSTR_LEN(new_uri->path) + 2, 0);
-							ZSTR_VAL(s)[0] = '/';
-							ZSTR_VAL(s)[1] = 0;
-							strcat(ZSTR_VAL(s), ZSTR_VAL(new_uri->path));
+							zend_string *s = zend_string_concat2("/", 1, ZSTR_VAL(new_uri->path), ZSTR_LEN(new_uri->path));
 							zend_string_release_ex(new_uri->path, 0);
 							new_uri->path = s;
 						}
diff --git a/ext/soap/php_sdl.c b/ext/soap/php_sdl.c
index e6871cd6e9b..ad37867dd46 100644
--- a/ext/soap/php_sdl.c
+++ b/ext/soap/php_sdl.c
@@ -2433,7 +2433,6 @@ static HashTable* make_persistent_sdl_function_headers(HashTable *headers, HashT

 	ZEND_HASH_MAP_FOREACH_STR_KEY_PTR(headers, key, tmp) {
 		pheader = malloc(sizeof(sdlSoapBindingFunctionHeader));
-		memset(pheader, 0, sizeof(sdlSoapBindingFunctionHeader));
 		*pheader = *tmp;

 		if (pheader->name) {
@@ -2497,7 +2496,6 @@ static HashTable* make_persistent_sdl_parameters(HashTable *params, HashTable *p

 	ZEND_HASH_FOREACH_STR_KEY_PTR(params, key, tmp) {
 		pparam = malloc(sizeof(sdlParam));
-		memset(pparam, 0, sizeof(sdlParam));
 		*pparam = *tmp;

 		if (pparam->paramName) {
@@ -2539,7 +2537,6 @@ static HashTable* make_persistent_sdl_function_faults(sdlFunctionPtr func, HashT

 	ZEND_HASH_MAP_FOREACH_STR_KEY_PTR(faults, key, tmp) {
 		pfault = malloc(sizeof(sdlFault));
-		memset(pfault, 0, sizeof(sdlFault));
 		*pfault = *tmp;

 		if (pfault->name) {