summaryrefslogtreecommitdiff
path: root/ext/soap/php_encoding.c
diff options
context:
space:
mode:
authorDmitry Stogov <dmitry@php.net>2004-04-01 10:47:44 +0000
committerDmitry Stogov <dmitry@php.net>2004-04-01 10:47:44 +0000
commit40bb7344525b76d0de051cd59f0f6b6436bd53a4 (patch)
treec6baca4f17c4c6e50998d7f04829f58643a91722 /ext/soap/php_encoding.c
parent88c17817a90e1c6a559ca128550b88ec0cd2171e (diff)
downloadphp-git-40bb7344525b76d0de051cd59f0f6b6436bd53a4.tar.gz
Some small improvments, support for new style constructors, support for exceptions other then SoapFault
Diffstat (limited to 'ext/soap/php_encoding.c')
-rw-r--r--ext/soap/php_encoding.c22
1 files changed, 16 insertions, 6 deletions
diff --git a/ext/soap/php_encoding.c b/ext/soap/php_encoding.c
index d3e2b31d19..0fd94bf0ce 100644
--- a/ext/soap/php_encoding.c
+++ b/ext/soap/php_encoding.c
@@ -1561,8 +1561,10 @@ static xmlNodePtr to_xml_array(encodeTypePtr type, zval *data, int style, xmlNod
dims[0] = i;
el = &data;
for (i = 1; i < dimension; i++) {
- if (el != NULL && Z_TYPE_PP(el) == IS_ARRAY && Z_ARRVAL_PP(el)->pListHead) {
- el = (zval**)Z_ARRVAL_PP(el)->pListHead->pData;
+ if (el != NULL && Z_TYPE_PP(el) == IS_ARRAY &&
+ zend_hash_num_elements(Z_ARRVAL_PP(el)) > 0) {
+ zend_hash_internal_pointer_reset(Z_ARRVAL_PP(el));
+ zend_hash_get_current_data(Z_ARRVAL_PP(el), (void**)&el);
if (Z_TYPE_PP(el) == IS_ARRAY) {
dims[i] = zend_hash_num_elements(Z_ARRVAL_PP(el));
} else {
@@ -1627,7 +1629,9 @@ static xmlNodePtr to_xml_array(encodeTypePtr type, zval *data, int style, xmlNod
if (sdl_type && sdl_type->elements &&
zend_hash_num_elements(sdl_type->elements) == 1 &&
- (elementType = *(sdlTypePtr*)sdl_type->elements->pListHead->pData) != NULL &&
+ (zend_hash_internal_pointer_reset(sdl_type->elements),
+ zend_hash_get_current_data(sdl_type->elements, (void**)&elementType) == SUCCESS) &&
+ (elementType = *(sdlTypePtr*)elementType) != NULL &&
elementType->encode && elementType->encode->details.type_str) {
element_type = elementType;
enc = elementType->encode;
@@ -1638,7 +1642,9 @@ static xmlNodePtr to_xml_array(encodeTypePtr type, zval *data, int style, xmlNod
}
} else if (sdl_type && sdl_type->elements &&
zend_hash_num_elements(sdl_type->elements) == 1 &&
- (elementType = *(sdlTypePtr*)sdl_type->elements->pListHead->pData) != NULL &&
+ (zend_hash_internal_pointer_reset(sdl_type->elements),
+ zend_hash_get_current_data(sdl_type->elements, (void**)&elementType) == SUCCESS) &&
+ (elementType = *(sdlTypePtr*)elementType) != NULL &&
elementType->encode && elementType->encode->details.type_str) {
element_type = elementType;
@@ -1817,13 +1823,17 @@ static zval *to_zval_array(encodeTypePtr type, xmlNodePtr data)
dims = get_position_12(dimension, (*ext)->val);
if (type->sdl_type && type->sdl_type->elements &&
zend_hash_num_elements(type->sdl_type->elements) == 1 &&
- (elementType = *(sdlTypePtr*)type->sdl_type->elements->pListHead->pData) != NULL &&
+ (zend_hash_internal_pointer_reset(type->sdl_type->elements),
+ zend_hash_get_current_data(type->sdl_type->elements, (void**)&elementType) == SUCCESS) &&
+ (elementType = *(sdlTypePtr*)elementType) != NULL &&
elementType->encode) {
enc = elementType->encode;
}
} else if (type->sdl_type && type->sdl_type->elements &&
zend_hash_num_elements(type->sdl_type->elements) == 1 &&
- (elementType = *(sdlTypePtr*)type->sdl_type->elements->pListHead->pData) != NULL &&
+ (zend_hash_internal_pointer_reset(type->sdl_type->elements),
+ zend_hash_get_current_data(type->sdl_type->elements, (void**)&elementType) == SUCCESS) &&
+ (elementType = *(sdlTypePtr*)elementType) != NULL &&
elementType->encode) {
enc = elementType->encode;
}