diff options
author | Nikita Popov <nikita.ppv@gmail.com> | 2019-02-25 13:00:16 +0100 |
---|---|---|
committer | Nikita Popov <nikita.ppv@gmail.com> | 2019-02-25 13:00:16 +0100 |
commit | af37d58cf7b77814b93ea97a8dcd2afb46c4424e (patch) | |
tree | 809a59ad86fc4b90355dbe8d3c0c52b62d637dc5 /Zend/zend_exceptions.c | |
parent | 1c22ace0582fb0a2ec581237fcf1c5b9c41edd04 (diff) | |
download | php-git-af37d58cf7b77814b93ea97a8dcd2afb46c4424e.tar.gz |
Fix assertion in Exception::getMessage() if $message is a ref
And same for other properties. Encountered in Symfony.
Diffstat (limited to 'Zend/zend_exceptions.c')
-rw-r--r-- | Zend/zend_exceptions.c | 36 |
1 files changed, 24 insertions, 12 deletions
diff --git a/Zend/zend_exceptions.c b/Zend/zend_exceptions.c index b4deb29a72..486a5d3908 100644 --- a/Zend/zend_exceptions.c +++ b/Zend/zend_exceptions.c @@ -401,11 +401,13 @@ ZEND_METHOD(error_exception, __construct) Get the file in which the exception occurred */ ZEND_METHOD(exception, getFile) { - zval rv; + zval *prop, rv; DEFAULT_0_PARAMS; - ZVAL_COPY(return_value, GET_PROPERTY(getThis(), ZEND_STR_FILE)); + prop = GET_PROPERTY(getThis(), ZEND_STR_FILE); + ZVAL_DEREF(prop); + ZVAL_COPY(return_value, prop); } /* }}} */ @@ -413,11 +415,13 @@ ZEND_METHOD(exception, getFile) Get the line in which the exception occurred */ ZEND_METHOD(exception, getLine) { - zval rv; + zval *prop, rv; DEFAULT_0_PARAMS; - ZVAL_COPY(return_value, GET_PROPERTY(getThis(), ZEND_STR_LINE)); + prop = GET_PROPERTY(getThis(), ZEND_STR_LINE); + ZVAL_DEREF(prop); + ZVAL_COPY(return_value, prop); } /* }}} */ @@ -425,11 +429,13 @@ ZEND_METHOD(exception, getLine) Get the exception message */ ZEND_METHOD(exception, getMessage) { - zval rv; + zval *prop, rv; DEFAULT_0_PARAMS; - ZVAL_COPY(return_value, GET_PROPERTY(getThis(), ZEND_STR_MESSAGE)); + prop = GET_PROPERTY(getThis(), ZEND_STR_MESSAGE); + ZVAL_DEREF(prop); + ZVAL_COPY(return_value, prop); } /* }}} */ @@ -437,11 +443,13 @@ ZEND_METHOD(exception, getMessage) Get the exception code */ ZEND_METHOD(exception, getCode) { - zval rv; + zval *prop, rv; DEFAULT_0_PARAMS; - ZVAL_COPY(return_value, GET_PROPERTY(getThis(), ZEND_STR_CODE)); + prop = GET_PROPERTY(getThis(), ZEND_STR_CODE); + ZVAL_DEREF(prop); + ZVAL_COPY(return_value, prop); } /* }}} */ @@ -449,11 +457,13 @@ ZEND_METHOD(exception, getCode) Get the stack trace for the location in which the exception occurred */ ZEND_METHOD(exception, getTrace) { - zval rv; + zval *prop, rv; DEFAULT_0_PARAMS; - ZVAL_COPY(return_value, GET_PROPERTY(getThis(), ZEND_STR_TRACE)); + prop = GET_PROPERTY(getThis(), ZEND_STR_TRACE); + ZVAL_DEREF(prop); + ZVAL_COPY(return_value, prop); } /* }}} */ @@ -461,11 +471,13 @@ ZEND_METHOD(exception, getTrace) Get the exception severity */ ZEND_METHOD(error_exception, getSeverity) { - zval rv; + zval *prop, rv; DEFAULT_0_PARAMS; - ZVAL_COPY(return_value, GET_PROPERTY(getThis(), ZEND_STR_SEVERITY)); + prop = GET_PROPERTY(getThis(), ZEND_STR_SEVERITY); + ZVAL_DEREF(prop); + ZVAL_COPY(return_value, prop); } /* }}} */ |