dmitry Tue Nov 1 06:11:35 2005 EDT
Added files: (Branch: PHP_5_1)
/php-src/ext/soap/tests any.phpt
Modified files:
/php-src/ext/soap php_encoding.c
Log:
Fixed SIGSEGV
http://cvs.php.net/diff.php/php-src/ext/soap/php_encoding.c?r1=1.103.2.9&r2=1.103.2.10&ty=u
Index: php-src/ext/soap/php_encoding.c
diff -u php-src/ext/soap/php_encoding.c:1.103.2.9
php-src/ext/soap/php_encoding.c:1.103.2.10
--- php-src/ext/soap/php_encoding.c:1.103.2.9 Tue Oct 11 06:15:40 2005
+++ php-src/ext/soap/php_encoding.c Tue Nov 1 06:11:34 2005
@@ -17,7 +17,7 @@
| Dmitry Stogov <[EMAIL PROTECTED]> |
+----------------------------------------------------------------------+
*/
-/* $Id: php_encoding.c,v 1.103.2.9 2005/10/11 10:15:40 dmitry Exp $ */
+/* $Id: php_encoding.c,v 1.103.2.10 2005/11/01 11:11:34 dmitry Exp $ */
#include <time.h>
@@ -2760,15 +2760,16 @@
if (Z_TYPE_P(data) == IS_STRING) {
ret = xmlNewTextLen(Z_STRVAL_P(data), Z_STRLEN_P(data));
+ ret->name = xmlStringTextNoenc;
} else {
zval tmp = *data;
zval_copy_ctor(&tmp);
convert_to_string(&tmp);
- ret = xmlNewTextLen(Z_STRVAL_P(data), Z_STRLEN_P(data));
+ ret = xmlNewTextLen(Z_STRVAL(tmp), Z_STRLEN(tmp));
zval_dtor(&tmp);
+ ret->name = xmlStringTextNoenc;
}
- ret->name = xmlStringTextNoenc;
xmlAddChild(parent, ret);
return ret;
http://cvs.php.net/co.php/php-src/ext/soap/tests/any.phpt?r=1.1&p=1
Index: php-src/ext/soap/tests/any.phpt
+++ php-src/ext/soap/tests/any.phpt
--TEST--
SOAP handling of <any>
--SKIPIF--
<?php require_once('skipif.inc'); ?>
--FILE--
<?php
class SOAPComplexType {
function SOAPComplexType($s, $i, $f) {
$this->varString = $s;
$this->varInt = $i;
$this->varFloat = $f;
}
}
$struct = new SOAPComplexType('arg',34,325.325);
function echoAnyElement($x) {
global $g;
$g = $x;
$struct = $x->inputAny->any;
if ($struct instanceof SOAPComplexType) {
return array("return" => array("any" => new SoapVar($struct,
SOAP_ENC_OBJECT, "SOAPComplexType", "http://soapinterop.org/xsd",
"SOAPComplexType", "http://soapinterop.org/")));
} else {
return "?";
}
}
class TestSoapClient extends SoapClient {
function __construct($wsdl, $options) {
parent::__construct($wsdl, $options);
$this->server = new SoapServer($wsdl, $options);
$this->server->addFunction('echoAnyElement');
}
function __doRequest($request, $location, $action, $version) {
ob_start();
$this->server->handle($request);
$response = ob_get_contents();
ob_end_clean();
return $response;
}
}
$client = new
TestSoapClient(dirname(__FILE__)."/interop/Round4/GroupI/round4_groupI_xsd.wsdl",
array("trace"=>1,"exceptions"=>0,
'classmap' =>
array('SOAPComplexType'=>'SOAPComplexType')));
$ret = $client->echoAnyElement(
array(
"inputAny"=>array(
"any"=>new SoapVar($struct, SOAP_ENC_OBJECT, "SOAPComplexType",
"http://soapinterop.org/xsd", "SOAPComplexType", "http://soapinterop.org/")
)));
var_dump($g);
var_dump($ret);
?>
--EXPECT--
object(stdClass)#5 (1) {
["inputAny"]=>
object(stdClass)#6 (1) {
["any"]=>
object(SOAPComplexType)#7 (3) {
["varInt"]=>
int(34)
["varString"]=>
string(3) "arg"
["varFloat"]=>
float(325.325)
}
}
}
object(stdClass)#8 (1) {
["return"]=>
object(stdClass)#9 (1) {
["any"]=>
object(SOAPComplexType)#10 (3) {
["varInt"]=>
int(34)
["varString"]=>
string(3) "arg"
["varFloat"]=>
float(325.325)
}
}
}
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php