diff options
author | Dmitry Stogov <dmitry@zend.com> | 2015-03-31 13:25:26 +0300 |
---|---|---|
committer | Dmitry Stogov <dmitry@zend.com> | 2015-03-31 13:25:26 +0300 |
commit | e8672deefc9e7fdddff0444b0bfce3e5e20b163e (patch) | |
tree | e096044aa21f1d4f12bdc666a85d71e4c450051f /Zend/zend.c | |
parent | f9d1a47f24f4f702edeed3be372ecf60d3b2b11e (diff) | |
download | php-git-e8672deefc9e7fdddff0444b0bfce3e5e20b163e.tar.gz |
Convert "Unsupported operands" fatal error into EngineException (exceptions can't be thrown at compile-time yet, so unsuported operands in constant expressions are still lead to fatal error).
Diffstat (limited to 'Zend/zend.c')
-rw-r--r-- | Zend/zend.c | 18 |
1 files changed, 11 insertions, 7 deletions
diff --git a/Zend/zend.c b/Zend/zend.c index 6bb614fab5..1f764445bd 100644 --- a/Zend/zend.c +++ b/Zend/zend.c @@ -1017,18 +1017,22 @@ static void zend_error_va_list(int type, const char *format, va_list args) zend_array *symbol_table; if (type & E_EXCEPTION) { - char *message = NULL; + type &= ~E_EXCEPTION; + //TODO: we can't convert compile-time errors to exceptions yet??? + if (EG(current_execute_data) && !CG(in_compilation)) { + char *message = NULL; #if !defined(HAVE_NORETURN) || defined(HAVE_NORETURN_ALIAS) - va_start(args, format); + va_start(args, format); #endif - zend_vspprintf(&message, 0, format, args); - zend_throw_exception(zend_get_engine_exception(), message, type & ~E_EXCEPTION); - efree(message); + zend_vspprintf(&message, 0, format, args); + zend_throw_exception(zend_get_engine_exception(), message, type); + efree(message); #if !defined(HAVE_NORETURN) || defined(HAVE_NORETURN_ALIAS) - va_end(args); + va_end(args); #endif - return; + return; + } } /* Report about uncaught exception in case of fatal errors */ |