diff options
author | Dmitry Stogov <dmitry@php.net> | 2004-04-01 10:47:44 +0000 |
---|---|---|
committer | Dmitry Stogov <dmitry@php.net> | 2004-04-01 10:47:44 +0000 |
commit | 40bb7344525b76d0de051cd59f0f6b6436bd53a4 (patch) | |
tree | c6baca4f17c4c6e50998d7f04829f58643a91722 /ext/soap/php_encoding.c | |
parent | 88c17817a90e1c6a559ca128550b88ec0cd2171e (diff) | |
download | php-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.c | 22 |
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; } |