Skip to content

Commit

Permalink
Fixed bug #42183 (classmap cause crashr in non-wsdl mode)
Browse files Browse the repository at this point in the history
  • Loading branch information
dstogov committed Aug 22, 2007
1 parent 1322b1a commit d7c3646
Show file tree
Hide file tree
Showing 2 changed files with 31 additions and 2 deletions.
6 changes: 4 additions & 2 deletions ext/soap/php_encoding.c
Expand Up @@ -470,12 +470,14 @@ xmlNodePtr master_to_xml(encodePtr encode, zval *data, int style, xmlNodePtr par
zend_uchar utype = zend_hash_get_current_key_ex(SOAP_GLOBAL(class_map), &type_name, &type_len, &idx, 0, &pos);

if (utype == HASH_KEY_IS_STRING || utype == HASH_KEY_IS_UNICODE) {
encodePtr enc;
encodePtr enc = NULL;

type_name.s = soap_encode_string_ex(utype, type_name, type_len TSRMLS_CC);

/* TODO: namespace isn't stored */
enc = get_encoder(SOAP_GLOBAL(sdl), SOAP_GLOBAL(sdl)->target_ns, type_name.s);
if (SOAP_GLOBAL(sdl)) {
enc = get_encoder(SOAP_GLOBAL(sdl), SOAP_GLOBAL(sdl)->target_ns, type_name.s);
}
if (enc) {
encode = enc;
} else if (SOAP_GLOBAL(sdl)) {
Expand Down
27 changes: 27 additions & 0 deletions ext/soap/tests/bugs/bug42183.phpt
@@ -0,0 +1,27 @@
--TEST--
Bug #42183 (classmap cause crash in non-wsdl mode )
--SKIPIF--
<?php require_once('skipif.inc'); ?>
--FILE--
<?php
class PHPObject {
}

$req = <<<EOF
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://ws.sit.com" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP-ENV:Body><ns1:test/></SOAP-ENV:Body></SOAP-ENV:Envelope>
EOF;

function test() {
return new PHPObject();
}

$server = new SoapServer(NULL, array('uri' => 'http://ws.sit.com',
'classmap' => array('Object' => 'PHPObject')));
$server->addFunction("test");
ob_start();
$server->handle($req);
ob_end_clean();
echo "ok\n";
--EXPECT--
ok

0 comments on commit d7c3646

Please sign in to comment.