diff options
-rw-r--r-- | ext/soap/soap.c | 1 | ||||
-rw-r--r-- | ext/soap/tests/bugs/bug46427.phpt | 20 |
2 files changed, 21 insertions, 0 deletions
diff --git a/ext/soap/soap.c b/ext/soap/soap.c index 2bee639121..09faf2345a 100644 --- a/ext/soap/soap.c +++ b/ext/soap/soap.c @@ -2522,6 +2522,7 @@ PHP_METHOD(SoapClient, SoapClient) if (zend_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_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 index 0000000000..5cf2e8f968 --- /dev/null +++ b/ext/soap/tests/bugs/bug46427.phpt @@ -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 |