]> granicus.if.org Git - php/commitdiff
Fixed bug #46427 (SoapClient() stumbles over its "stream_context" parameter)
authorDmitry Stogov <dmitry@php.net>
Thu, 27 Nov 2008 11:25:52 +0000 (11:25 +0000)
committerDmitry Stogov <dmitry@php.net>
Thu, 27 Nov 2008 11:25:52 +0000 (11:25 +0000)
ext/soap/soap.c
ext/soap/tests/bugs/bug46427.phpt [new file with mode: 0644]

index e8ce4ac8feb8d640d5248fc268540b5febf79d23..7449e0faad851cc363c76dabd19e7d63c6ceb437 100644 (file)
@@ -2862,6 +2862,7 @@ PHP_METHOD(SoapClient, SoapClient)
                if (zend_ascii_hash_find(ht, "stream_context", sizeof("stream_context"), (void**)&tmp) == SUCCESS &&
                                Z_TYPE_PP(tmp) == IS_RESOURCE) {
                        context = php_stream_context_from_zval(*tmp, 1);
+                       zend_list_addref(context->rsrc_id);
                }
 
                if (zend_ascii_hash_find(ht, "location", sizeof("location"), (void**)&tmp) == SUCCESS &&
diff --git a/ext/soap/tests/bugs/bug46427.phpt b/ext/soap/tests/bugs/bug46427.phpt
new file mode 100644 (file)
index 0000000..5cf2e8f
--- /dev/null
@@ -0,0 +1,20 @@
+--TEST--
+Bug #46427 (SoapClient() stumbles over its "stream_context" parameter)
+--FILE--
+<?php
+error_reporting(E_ALL|E_STRICT);
+
+function getSoapClient_1() {
+    $ctx = stream_context_create();
+    return new SoapClient(NULL, array(
+       'stream_context' => $ctx,
+       'location' => 'test://',
+       'uri' => 'test://',
+       'exceptions' => false));
+}
+
+getSoapClient_1()->__soapCall('Help', array());
+echo "ok\n";
+?>
+--EXPECT--
+ok