summaryrefslogtreecommitdiff
path: root/Zend/zend_exceptions.c
diff options
context:
space:
mode:
authorNikita Popov <nikita.ppv@gmail.com>2019-02-25 13:00:16 +0100
committerNikita Popov <nikita.ppv@gmail.com>2019-02-25 13:00:16 +0100
commitaf37d58cf7b77814b93ea97a8dcd2afb46c4424e (patch)
tree809a59ad86fc4b90355dbe8d3c0c52b62d637dc5 /Zend/zend_exceptions.c
parent1c22ace0582fb0a2ec581237fcf1c5b9c41edd04 (diff)
downloadphp-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.c36
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);
}
/* }}} */