diff options
Diffstat (limited to 'ext/soap/php_packet_soap.c')
-rw-r--r-- | ext/soap/php_packet_soap.c | 77 |
1 files changed, 27 insertions, 50 deletions
diff --git a/ext/soap/php_packet_soap.c b/ext/soap/php_packet_soap.c index 8a039af4a1..0621298964 100644 --- a/ext/soap/php_packet_soap.c +++ b/ext/soap/php_packet_soap.c @@ -318,16 +318,12 @@ int parse_packet_soap(zval *this_ptr, char *buffer, int buffer_size, sdlFunction tmp = master_to_zval(NULL, val); } } - if (UG(unicode)) { - UErrorCode status = U_ZERO_ERROR; - zstr u_name; - int u_name_len; - zend_string_to_unicode_ex(UG(utf8_conv), &u_name.u, &u_name_len, param->paramName, strlen(param->paramName), &status); - add_u_assoc_zval_ex(return_value, IS_UNICODE, u_name, u_name_len+1, tmp); - efree(u_name.u); - } else { - add_assoc_zval(return_value, param->paramName, tmp); - } + UErrorCode status = U_ZERO_ERROR; + zstr u_name; + int u_name_len; + zend_string_to_unicode_ex(UG(utf8_conv), &u_name.u, &u_name_len, param->paramName, strlen(param->paramName), &status); + add_u_assoc_zval_ex(return_value, IS_UNICODE, u_name, u_name_len+1, tmp); + efree(u_name.u); param_count++; @@ -349,38 +345,23 @@ int parse_packet_soap(zval *this_ptr, char *buffer, int buffer_size, sdlFunction tmp = master_to_zval(NULL, val); if (val->name) { - if (UG(unicode)) { - UErrorCode status = U_ZERO_ERROR; - zstr u_name; - int u_name_len; - zend_string_to_unicode_ex(UG(utf8_conv), &u_name.u, &u_name_len, (char*)val->name, strlen((char*)val->name), &status); - if (zend_u_hash_find(Z_ARRVAL_P(return_value), IS_UNICODE, u_name, u_name_len+1, (void**)&arr) == SUCCESS) { - add_next_index_zval(*arr, tmp); - } else if (val->next && get_node(val->next, (char*)val->name)) { - zval *arr; - - MAKE_STD_ZVAL(arr); - array_init(arr); - add_next_index_zval(arr, tmp); - add_u_assoc_zval_ex(return_value, IS_UNICODE, u_name, u_name_len+1, arr); - } else { - add_u_assoc_zval_ex(return_value, IS_UNICODE, u_name, u_name_len+1, tmp); - } - efree(u_name.u); + UErrorCode status = U_ZERO_ERROR; + zstr u_name; + int u_name_len; + zend_string_to_unicode_ex(UG(utf8_conv), &u_name.u, &u_name_len, (char*)val->name, strlen((char*)val->name), &status); + if (zend_u_hash_find(Z_ARRVAL_P(return_value), IS_UNICODE, u_name, u_name_len+1, (void**)&arr) == SUCCESS) { + add_next_index_zval(*arr, tmp); + } else if (val->next && get_node(val->next, (char*)val->name)) { + zval *arr; + + MAKE_STD_ZVAL(arr); + array_init(arr); + add_next_index_zval(arr, tmp); + add_u_assoc_zval_ex(return_value, IS_UNICODE, u_name, u_name_len+1, arr); } else { - if (zend_hash_find(Z_ARRVAL_P(return_value), (char*)val->name, strlen((char*)val->name)+1, (void**)&arr) == SUCCESS) { - add_next_index_zval(*arr, tmp); - } else if (val->next && get_node(val->next, (char*)val->name)) { - zval *arr; - - MAKE_STD_ZVAL(arr); - array_init(arr); - add_next_index_zval(arr, tmp); - add_assoc_zval(return_value, (char*)val->name, arr); - } else { - add_assoc_zval(return_value, (char*)val->name, tmp); - } + add_u_assoc_zval_ex(return_value, IS_UNICODE, u_name, u_name_len+1, tmp); } + efree(u_name.u); } else { add_next_index_zval(return_value, tmp); } @@ -432,16 +413,12 @@ int parse_packet_soap(zval *this_ptr, char *buffer, int buffer_size, sdlFunction smart_str_free(&key); } val = master_to_zval(enc, trav); - if (UG(unicode)) { - UErrorCode status = U_ZERO_ERROR; - zstr u_name; - int u_name_len; - zend_string_to_unicode_ex(UG(utf8_conv), &u_name.u, &u_name_len, (char*)trav->name, strlen((char*)trav->name), &status); - add_u_assoc_zval_ex(soap_headers, IS_UNICODE, u_name, u_name_len+1, val); - efree(u_name.u); - } else { - add_assoc_zval(soap_headers, (char*)trav->name, val); - } + UErrorCode status = U_ZERO_ERROR; + zstr u_name; + int u_name_len; + zend_string_to_unicode_ex(UG(utf8_conv), &u_name.u, &u_name_len, (char*)trav->name, strlen((char*)trav->name), &status); + add_u_assoc_zval_ex(soap_headers, IS_UNICODE, u_name, u_name_len+1, val); + efree(u_name.u); } trav = trav->next; } |