@@ -85,12 +85,10 @@ static sdlTypePtr get_element(sdlPtr sdl, xmlNodePtr node, const xmlChar *type)
8585 size_t ns_len = xmlStrlen (nsptr -> href );
8686 size_t type_len = strlen (cptype );
8787 size_t len = ns_len + type_len + 1 ;
88- char * nscat = emalloc (len + 1 );
89-
90- memcpy (nscat , nsptr -> href , ns_len );
91- nscat [ns_len ] = ':' ;
92- memcpy (nscat + ns_len + 1 , cptype , type_len );
93- nscat [len ] = '\0' ;
88+ char * nscat = zend_cstr_concat3 (
89+ (const char * ) nsptr -> href , ns_len ,
90+ ":" , 1 ,
91+ cptype , type_len );
9492
9593 if ((sdl_type = zend_hash_str_find_ptr (sdl -> elements , nscat , len )) != NULL ) {
9694 ret = sdl_type ;
@@ -117,13 +115,10 @@ encodePtr get_encoder(sdlPtr sdl, const char *ns, const char *type)
117115 size_t type_len = strlen (type );
118116 size_t len = ns_len + type_len + 1 ;
119117
120- nscat = emalloc (len + 1 );
121- if (ns ) {
122- memcpy (nscat , ns , ns_len );
123- }
124- nscat [ns_len ] = ':' ;
125- memcpy (nscat + ns_len + 1 , type , type_len );
126- nscat [len ] = '\0' ;
118+ nscat = zend_cstr_concat3 (
119+ ns , ns_len ,
120+ ":" , 1 ,
121+ type , type_len );
127122
128123 enc = get_encoder_ex (sdl , nscat , len );
129124
@@ -138,11 +133,10 @@ encodePtr get_encoder(sdlPtr sdl, const char *ns, const char *type)
138133
139134 enc_ns_len = sizeof (XSD_NAMESPACE )- 1 ;
140135 enc_len = enc_ns_len + type_len + 1 ;
141- enc_nscat = emalloc (enc_len + 1 );
142- memcpy (enc_nscat , XSD_NAMESPACE , sizeof (XSD_NAMESPACE )- 1 );
143- enc_nscat [enc_ns_len ] = ':' ;
144- memcpy (enc_nscat + enc_ns_len + 1 , type , type_len );
145- enc_nscat [enc_len ] = '\0' ;
136+ enc_nscat = zend_cstr_concat3 (
137+ XSD_NAMESPACE , enc_ns_len ,
138+ ":" , 1 ,
139+ type , type_len );
146140
147141 enc = get_encoder_ex (NULL , enc_nscat , enc_len );
148142 efree (enc_nscat );
@@ -1407,11 +1401,10 @@ static void sdl_deserialize_encoder(encodePtr enc, sdlTypePtr *types, char **in)
14071401
14081402 enc_ns_len = sizeof (XSD_NAMESPACE )- 1 ;
14091403 enc_len = enc_ns_len + type_len + 1 ;
1410- enc_nscat = emalloc (enc_len + 1 );
1411- memcpy (enc_nscat , XSD_NAMESPACE , sizeof (XSD_NAMESPACE )- 1 );
1412- enc_nscat [enc_ns_len ] = ':' ;
1413- memcpy (enc_nscat + enc_ns_len + 1 , enc -> details .type_str , type_len );
1414- enc_nscat [enc_len ] = '\0' ;
1404+ enc_nscat = zend_cstr_concat3 (
1405+ XSD_NAMESPACE , enc_ns_len ,
1406+ ":" , 1 ,
1407+ enc -> details .type_str , type_len );
14151408
14161409 real_enc = get_encoder_ex (NULL , enc_nscat , enc_len );
14171410 efree (enc_nscat );
0 commit comments