mirror of
https://github.com/php/php-src.git
synced 2024-09-21 18:07:23 +00:00
Fix assertion in Exception::getMessage() if $message is a ref
And same for other properties. Encountered in Symfony.
This commit is contained in:
parent
1c22ace058
commit
af37d58cf7
30
Zend/tests/exception_getters_with_ref_props.phpt
Normal file
30
Zend/tests/exception_getters_with_ref_props.phpt
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
--TEST--
|
||||||
|
Calling exception getters when properties hold references
|
||||||
|
--FILE--
|
||||||
|
<?php
|
||||||
|
|
||||||
|
class MyException extends Exception {
|
||||||
|
public function __construct(&$refMsg, &$refCode, &$refFile, &$refLine) {
|
||||||
|
$this->message =& $refMsg;
|
||||||
|
$this->code =& $refCode;
|
||||||
|
$this->file =& $refFile;
|
||||||
|
$this->line =& $refLine;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$refMsg = "foo";
|
||||||
|
$refCode = 0;
|
||||||
|
$refFile = "foobar";
|
||||||
|
$refLine = 42;
|
||||||
|
$ex = new MyException($refMsg, $refCode, $refFile, $refLine);
|
||||||
|
var_dump($ex->getMessage());
|
||||||
|
var_dump($ex->getCode());
|
||||||
|
var_dump($ex->getFile());
|
||||||
|
var_dump($ex->getLine());
|
||||||
|
|
||||||
|
?>
|
||||||
|
--EXPECT--
|
||||||
|
string(3) "foo"
|
||||||
|
int(0)
|
||||||
|
string(6) "foobar"
|
||||||
|
int(42)
|
@ -401,11 +401,13 @@ ZEND_METHOD(error_exception, __construct)
|
|||||||
Get the file in which the exception occurred */
|
Get the file in which the exception occurred */
|
||||||
ZEND_METHOD(exception, getFile)
|
ZEND_METHOD(exception, getFile)
|
||||||
{
|
{
|
||||||
zval rv;
|
zval *prop, rv;
|
||||||
|
|
||||||
DEFAULT_0_PARAMS;
|
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 */
|
Get the line in which the exception occurred */
|
||||||
ZEND_METHOD(exception, getLine)
|
ZEND_METHOD(exception, getLine)
|
||||||
{
|
{
|
||||||
zval rv;
|
zval *prop, rv;
|
||||||
|
|
||||||
DEFAULT_0_PARAMS;
|
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 */
|
Get the exception message */
|
||||||
ZEND_METHOD(exception, getMessage)
|
ZEND_METHOD(exception, getMessage)
|
||||||
{
|
{
|
||||||
zval rv;
|
zval *prop, rv;
|
||||||
|
|
||||||
DEFAULT_0_PARAMS;
|
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 */
|
Get the exception code */
|
||||||
ZEND_METHOD(exception, getCode)
|
ZEND_METHOD(exception, getCode)
|
||||||
{
|
{
|
||||||
zval rv;
|
zval *prop, rv;
|
||||||
|
|
||||||
DEFAULT_0_PARAMS;
|
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 */
|
Get the stack trace for the location in which the exception occurred */
|
||||||
ZEND_METHOD(exception, getTrace)
|
ZEND_METHOD(exception, getTrace)
|
||||||
{
|
{
|
||||||
zval rv;
|
zval *prop, rv;
|
||||||
|
|
||||||
DEFAULT_0_PARAMS;
|
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 */
|
Get the exception severity */
|
||||||
ZEND_METHOD(error_exception, getSeverity)
|
ZEND_METHOD(error_exception, getSeverity)
|
||||||
{
|
{
|
||||||
zval rv;
|
zval *prop, rv;
|
||||||
|
|
||||||
DEFAULT_0_PARAMS;
|
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);
|
||||||
}
|
}
|
||||||
/* }}} */
|
/* }}} */
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user