From: Dmitry Stogov Date: Tue, 21 Jun 2005 06:25:07 +0000 (+0000) Subject: ext/soap should use type defined in SoapVar(), if wsdl defines another type X-Git-Tag: php-5.0.5RC1~145 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=0857ef4e0e00363ac14469067ac00f7dcdb7f388;p=php ext/soap should use type defined in SoapVar(), if wsdl defines another type --- diff --git a/ext/soap/php_encoding.c b/ext/soap/php_encoding.c index 813c54b70e..0f2e16b8a8 100644 --- a/ext/soap/php_encoding.c +++ b/ext/soap/php_encoding.c @@ -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);