]> granicus.if.org Git - php/commitdiff
ext/soap should use type defined in SoapVar(), if wsdl defines another type
authorDmitry Stogov <dmitry@php.net>
Tue, 21 Jun 2005 06:25:07 +0000 (06:25 +0000)
committerDmitry Stogov <dmitry@php.net>
Tue, 21 Jun 2005 06:25:07 +0000 (06:25 +0000)
ext/soap/php_encoding.c

index 813c54b70e50fcdba4a4645729b60039b9aa8e1d..0f2e16b8a8c2d3faf5873bf52ff39007cba89019 100644 (file)
@@ -260,7 +260,7 @@ xmlNodePtr master_to_xml(encodePtr encode, zval *data, int style, xmlNodePtr par
                        soap_error0(E_ERROR, "Encoding: SoapVar hasn't 'enc_type' propery");
                }
 
-               if (SOAP_GLOBAL(sdl) && encode == NULL) {
+               if (SOAP_GLOBAL(sdl)) {
                        if (zend_hash_find(ht, "enc_stype", sizeof("enc_stype"), (void **)&zstype) == SUCCESS) {
                                if (zend_hash_find(ht, "enc_ns", sizeof("enc_ns"), (void **)&zns) == SUCCESS) {
                                  enc = get_encoder(SOAP_GLOBAL(sdl), Z_STRVAL_PP(zns), Z_STRVAL_PP(zstype));
@@ -272,6 +272,9 @@ xmlNodePtr master_to_xml(encodePtr encode, zval *data, int style, xmlNodePtr par
                if (enc == NULL) {
                        enc = get_conversion(Z_LVAL_P(*ztype));
                }
+               if (enc == NULL) {
+                       enc = encode;
+               }
 
                if (zend_hash_find(ht, "enc_value", sizeof("enc_value"), (void **)&zdata) == FAILURE) {
                        node = master_to_xml(enc, NULL, style, parent);
@@ -279,7 +282,7 @@ xmlNodePtr master_to_xml(encodePtr encode, zval *data, int style, xmlNodePtr par
                        node = master_to_xml(enc, *zdata, style, parent);
                }
 
-               if (style == SOAP_ENCODED || (SOAP_GLOBAL(sdl) && encode == NULL)) {
+               if (style == SOAP_ENCODED || (SOAP_GLOBAL(sdl) && encode != enc)) {
                        if (zend_hash_find(ht, "enc_stype", sizeof("enc_stype"), (void **)&zstype) == SUCCESS) {
                                if (style == SOAP_LITERAL) {
                                        encode_add_ns(node, XSI_NAMESPACE);