summaryrefslogtreecommitdiff
path: root/Zend
diff options
context:
space:
mode:
authorXinchen Hui <laruence@php.net>2015-05-18 11:09:09 +0800
committerXinchen Hui <laruence@php.net>2015-05-18 11:13:55 +0800
commita5f408c91bb4403332116237cfebbdd6b7c6e5ab (patch)
tree1ff4608eb524ebe02a3779e897792fa495a76151 /Zend
parentd02deee677bc80205b87a971e3b41a1a5dbdd70c (diff)
downloadphp-git-a5f408c91bb4403332116237cfebbdd6b7c6e5ab.tar.gz
1. Fixed bug #69640 Unhandled EngineExceptions thrown from userland do not produce any output
2. Fixed Segfault introduced by latest changes
Diffstat (limited to 'Zend')
-rw-r--r--Zend/zend_exceptions.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/Zend/zend_exceptions.c b/Zend/zend_exceptions.c
index 9ad221d695..023836e4f1 100644
--- a/Zend/zend_exceptions.c
+++ b/Zend/zend_exceptions.c
@@ -158,6 +158,7 @@ static zend_object *zend_default_exception_new_ex(zend_class_entry *class_type,
zval obj;
zend_object *object;
zval trace;
+ zend_string *filename;
Z_OBJ(obj) = object = zend_objects_new(class_type);
Z_OBJ_HT(obj) = &default_exception_handlers;
@@ -171,11 +172,11 @@ static zend_object *zend_default_exception_new_ex(zend_class_entry *class_type,
}
Z_SET_REFCOUNT(trace, 0);
- if (EXPECTED(class_type != parse_exception_ce)) {
+ if (EXPECTED(class_type != parse_exception_ce || !(filename = zend_get_compiled_filename()))) {
zend_update_property_string(base_exception_ce, &obj, "file", sizeof("file")-1, zend_get_executed_filename());
zend_update_property_long(base_exception_ce, &obj, "line", sizeof("line")-1, zend_get_executed_lineno());
} else {
- zend_update_property_string(base_exception_ce, &obj, "file", sizeof("file")-1, zend_get_compiled_filename()->val);
+ zend_update_property_string(base_exception_ce, &obj, "file", sizeof("file")-1, filename->val);
zend_update_property_long(base_exception_ce, &obj, "line", sizeof("line")-1, zend_get_compiled_lineno());
}
zend_update_property(base_exception_ce, &obj, "trace", sizeof("trace")-1, &trace);
@@ -920,7 +921,7 @@ ZEND_API void zend_exception_error(zend_object *ex, int severity) /* {{{ */
zend_long line = zval_get_long(GET_PROPERTY_SILENT(&exception, "line"));
zend_long code = zval_get_long(GET_PROPERTY_SILENT(&exception, "code"));
- zend_error_helper(code, file->val, line, "%s", message->val);
+ zend_error_helper(code? code : E_ERROR, file->val, line, "%s", message->val);
zend_string_release(file);
zend_string_release(message);