diff options
author | Anton Artamonov <a.artmnv@gmail.com> | 2017-11-04 19:51:33 +0700 |
---|---|---|
committer | Nikita Popov <nikita.ppv@gmail.com> | 2017-12-22 17:47:54 +0100 |
commit | 024637378827ff03ccfb6b903c9d9b968d30af8d (patch) | |
tree | d9ba8dfb07cf89dca9276f48ac940f0a5309676d /ext | |
parent | 77b0e2fd3f5e76f12bdd4a66f64e553bc35cb37d (diff) | |
download | php-git-024637378827ff03ccfb6b903c9d9b968d30af8d.tar.gz |
Fixed bug #70469
Don't generate an E_ERROR if we've already thrown an exception.
This interacts badly with error_get_last() checks.
Diffstat (limited to 'ext')
-rw-r--r-- | ext/soap/soap.c | 20 | ||||
-rw-r--r-- | ext/soap/tests/bugs/bug70469.phpt | 20 |
2 files changed, 20 insertions, 20 deletions
diff --git a/ext/soap/soap.c b/ext/soap/soap.c index 54ddaf0f1b..c2b84746b2 100644 --- a/ext/soap/soap.c +++ b/ext/soap/soap.c @@ -2166,8 +2166,6 @@ static void soap_error_handler(int error_num, const char *error_filename, const #ifdef va_copy va_list argcopy; #endif - zend_object **old_objects; - int old = PG(display_errors); #ifdef va_copy va_copy(argcopy, args); @@ -2187,24 +2185,6 @@ static void soap_error_handler(int error_num, const char *error_filename, const add_soap_fault_ex(&fault, &SOAP_GLOBAL(error_object), code, buffer, NULL, NULL); Z_ADDREF(fault); zend_throw_exception_object(&fault); - - old_objects = EG(objects_store).object_buckets; - EG(objects_store).object_buckets = NULL; - PG(display_errors) = 0; - SG(sapi_headers).http_status_line = NULL; - zend_try { - call_old_error_handler(error_num, error_filename, error_lineno, format, args); - } zend_catch { - CG(in_compilation) = _old_in_compilation; - EG(current_execute_data) = _old_current_execute_data; - if (SG(sapi_headers).http_status_line) { - efree(SG(sapi_headers).http_status_line); - } - SG(sapi_headers).http_status_line = _old_http_status_line; - SG(sapi_headers).http_response_code = _old_http_response_code; - } zend_end_try(); - EG(objects_store).object_buckets = old_objects; - PG(display_errors) = old; zend_bailout(); } else if (!use_exceptions || !SOAP_GLOBAL(error_code) || diff --git a/ext/soap/tests/bugs/bug70469.phpt b/ext/soap/tests/bugs/bug70469.phpt new file mode 100644 index 0000000000..ca3ab80950 --- /dev/null +++ b/ext/soap/tests/bugs/bug70469.phpt @@ -0,0 +1,20 @@ +--TEST-- +Bug #70469 (SoapClient should not generate E_ERROR if exceptions enabled) +--SKIPIF-- +<?php require_once('skipif.inc'); ?> +--FILE-- +<?php +try { + $x = new SoapClient('http://i_dont_exist.com/some.wsdl'); +} catch (SoapFault $e) { + echo "catched\n"; +} + +$error = error_get_last(); +if ($error === null) { + echo "ok\n"; +} +?> +--EXPECT-- +catched +ok
\ No newline at end of file |