summaryrefslogtreecommitdiff
path: root/Zend/zend_exceptions.c
diff options
context:
space:
mode:
authorAnatol Belski <ab@php.net>2013-05-12 14:06:59 +0200
committerAnatol Belski <ab@php.net>2013-05-12 14:06:59 +0200
commitdd188e9538a83473246d94642a7ce577fc5de33b (patch)
treee2aefc682dda8a92ab5edea7c8f5f24c9f23f2e3 /Zend/zend_exceptions.c
parent699dc04c5597a6dbd5d4fac43096d01ea37e6069 (diff)
parentd6505acbf5ff6db0e9e19cdba121183d9563bad5 (diff)
downloadphp-git-dd188e9538a83473246d94642a7ce577fc5de33b.tar.gz
Merge branch 'PHP-5.3' into PHP-5.4
* PHP-5.3: Fixed bug #64821 Custom Exceptions crash when internal properties overridden
Diffstat (limited to 'Zend/zend_exceptions.c')
-rw-r--r--Zend/zend_exceptions.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/Zend/zend_exceptions.c b/Zend/zend_exceptions.c
index f457b2846f..f07c1135f0 100644
--- a/Zend/zend_exceptions.c
+++ b/Zend/zend_exceptions.c
@@ -817,6 +817,10 @@ ZEND_API void zend_exception_error(zval *exception, int severity TSRMLS_DC) /* {
if (instanceof_function(ce_exception, default_exception_ce TSRMLS_CC)) {
file = zend_read_property(default_exception_ce, EG(exception), "file", sizeof("file")-1, 1 TSRMLS_CC);
line = zend_read_property(default_exception_ce, EG(exception), "line", sizeof("line")-1, 1 TSRMLS_CC);
+
+ convert_to_string(file);
+ file = (Z_STRLEN_P(file) > 0) ? file : NULL;
+ line = (Z_TYPE_P(line) == IS_LONG) ? line : NULL;
} else {
file = NULL;
line = NULL;
@@ -828,7 +832,11 @@ ZEND_API void zend_exception_error(zval *exception, int severity TSRMLS_DC) /* {
file = zend_read_property(default_exception_ce, exception, "file", sizeof("file")-1, 1 TSRMLS_CC);
line = zend_read_property(default_exception_ce, exception, "line", sizeof("line")-1, 1 TSRMLS_CC);
- zend_error_va(severity, Z_STRVAL_P(file), Z_LVAL_P(line), "Uncaught %s\n thrown", Z_STRVAL_P(str));
+ convert_to_string(str);
+ convert_to_string(file);
+ convert_to_long(line);
+
+ zend_error_va(severity, (Z_STRLEN_P(file) > 0) ? Z_STRVAL_P(file) : NULL, Z_LVAL_P(line), "Uncaught %s\n thrown", Z_STRVAL_P(str));
} else {
zend_error(severity, "Uncaught exception '%s'", ce_exception->name);
}