From a896cda2c56ae9525e8d99622841350a1fb73926 Mon Sep 17 00:00:00 2001 From: Michael Wallner Date: Fri, 7 Oct 2005 13:31:42 +0000 Subject: [PATCH] - ditch leak when throwing exceptions - add simple test --- http_api.c | 1 + tests/exceptions.phpt | 59 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 60 insertions(+) create mode 100644 tests/exceptions.phpt diff --git a/http_api.c b/http_api.c index 999826d..c5c63f9 100644 --- a/http_api.c +++ b/http_api.c @@ -176,6 +176,7 @@ void _http_error_ex(long type TSRMLS_DC, long code, const char *format, ...) vspprintf(&message, 0, format, args); zend_throw_exception(http_exception_get_for_code(code), message, code TSRMLS_CC); + efree(message); } else #endif php_verror(NULL, "", type, format, args TSRMLS_CC); diff --git a/tests/exceptions.phpt b/tests/exceptions.phpt new file mode 100644 index 0000000..af48fde --- /dev/null +++ b/tests/exceptions.phpt @@ -0,0 +1,59 @@ +--TEST-- +exceptions +--SKIPIF-- + +--FILE-- + 'Runtime', + HTTP_E_INVALID_PARAM => 'InvalidParam', + HTTP_E_HEADER => 'Header', + HTTP_E_MALFORMED_HEADERS => 'MalformedHeaders', + HTTP_E_REQUEST_METHOD => 'RequestMethod', + HTTP_E_MESSAGE_TYPE => 'MessageType', + HTTP_E_ENCODING => 'Encoding', + HTTP_E_REQUEST => 'Request', + HTTP_E_REQUEST_POOL => 'RequestPool', + HTTP_E_SOCKET => 'Socket', + HTTP_E_RESPONSE => 'Response', + HTTP_E_URL => 'Url', +); + +foreach ($e as $i => $c) { + try { + $n = "Http{$c}Exception"; + throw new $n; + } catch (HttpException $x) { + printf("%2d: %s\n", $i, get_class($x)); + } +} +try { + $tmp = http_get(null); +} catch (HttpRequestException $x) { + printf("%s (%d)\n", $x->getMessage(), $x->getCode()); +} +echo "Done\n"; +?> +--EXPECTF-- +%sTEST + 1: HttpRuntimeException + 2: HttpInvalidParamException + 3: HttpHeaderException + 4: HttpMalformedHeadersException + 5: HttpRequestMethodException + 6: HttpMessageTypeException + 7: HttpEncodingException + 8: HttpRequestException + 9: HttpRequestPoolException +10: HttpSocketException +11: HttpResponseException +12: HttpUrlException +Could not perform request: URL using bad/illegal format or missing URL (8) +Done -- 2.30.2