]> granicus.if.org Git - php/commitdiff
- Catch exceptions in cli -a
authorMarcus Boerger <helly@php.net>
Fri, 2 Jan 2009 13:14:17 +0000 (13:14 +0000)
committerMarcus Boerger <helly@php.net>
Fri, 2 Jan 2009 13:14:17 +0000 (13:14 +0000)
Zend/zend.c
Zend/zend_exceptions.c
Zend/zend_exceptions.h
Zend/zend_execute_API.c
sapi/cli/php_cli.c

index 6c2bea66c62ca45829e1616d2b14b4acf5ec2518..65d874d09883c6ef28b0548b7def467632eafb16 100644 (file)
@@ -1728,10 +1728,10 @@ ZEND_API int zend_execute_scripts(int type TSRMLS_DC, zval **retval, int file_co
                                                }
                                        } else {
                                                zend_exception_restore(TSRMLS_C);
-                                               zend_exception_error(EG(exception) TSRMLS_CC);
+                                               zend_exception_error(EG(exception), E_ERROR TSRMLS_CC);
                                        }
                                } else {
-                                       zend_exception_error(EG(exception) TSRMLS_CC);
+                                       zend_exception_error(EG(exception), E_ERROR TSRMLS_CC);
                                }
                        }
                        destroy_op_array(EG(active_op_array) TSRMLS_CC);
index c2ab940eab80713087656a76e9c275a01de30bb0..ee638b8c8a04e1cc563ccdc95eb2241b207bafaf 100644 (file)
@@ -817,8 +817,8 @@ static void zend_error_va(int type, const char *file, uint lineno, const char *f
 }
 /* }}} */
 
-/* This function doesn't return as it calls E_ERROR */
-ZEND_API void zend_exception_error(zval *exception TSRMLS_DC) /* {{{ */
+/* This function doesn't return if it uses E_ERROR */
+ZEND_API void zend_exception_error(zval *exception, int severity TSRMLS_DC) /* {{{ */
 {
        zend_class_entry *ce_exception = Z_OBJCE_P(exception);
        if (instanceof_function(ce_exception, default_exception_ce TSRMLS_CC)) {
@@ -861,10 +861,10 @@ ZEND_API void zend_exception_error(zval *exception TSRMLS_DC) /* {{{ */
                        zend_error_va(E_ERROR, Z_STRVAL(copy), Z_LVAL_P(line), "Uncaught %R\n  thrown", Z_TYPE_P(str), Z_UNIVAL_P(str));
                        zval_dtor(&copy);
                } else {
-                       zend_error_va(E_ERROR, Z_STRVAL_P(file), Z_LVAL_P(line), "Uncaught %R\n  thrown", Z_TYPE_P(str), Z_UNIVAL_P(str));
+                       zend_error_va(severity, Z_STRVAL_P(file), Z_LVAL_P(line), "Uncaught %R\n  thrown", Z_TYPE_P(str), Z_UNIVAL_P(str));
                }
        } else {
-               zend_error(E_ERROR, "Uncaught exception '%v'", ce_exception->name);
+               zend_error(severity, "Uncaught exception '%v'", ce_exception->name);
        }
 }
 /* }}} */
index 9b969f31439d51211f955f7ff82f6a12ba57f8d1..2eeba22765b9865ea0caf8a5dc3e01987aa872df 100644 (file)
@@ -49,8 +49,8 @@ ZEND_API zval * zend_throw_error_exception(zend_class_entry *exception_ce, char
 
 extern ZEND_API void (*zend_throw_exception_hook)(zval *ex TSRMLS_DC);
 
-/* show an exception using zend_error(E_ERROR,...) */
-ZEND_API void zend_exception_error(zval *exception TSRMLS_DC);
+/* show an exception using zend_error(severity,...), severity should be E_ERROR */
+ZEND_API void zend_exception_error(zval *exception, int severity TSRMLS_DC);
 
 /* do not export, in php it's available thru spprintf directly */
 int zend_spprintf(char **message, int max_len, char *format, ...);
index 5a4e8df52e647508cbc4203ade18c379a65ca5d1..53873b16e8e25c05a50eaf7fe361a0650670988d 100644 (file)
@@ -1312,7 +1312,7 @@ ZEND_API int zend_u_eval_string_ex(zend_uchar type, zstr str, zval *retval_ptr,
 
        result = zend_u_eval_string(type, str, retval_ptr, string_name TSRMLS_CC);
        if (handle_exceptions && EG(exception)) {
-               zend_exception_error(EG(exception) TSRMLS_CC);
+               zend_exception_error(EG(exception), E_ERROR TSRMLS_CC);
                result = FAILURE;
        }
        return result;
@@ -1387,7 +1387,7 @@ void execute_new_code(TSRMLS_D) /* {{{ */
        zend_execute(CG(active_op_array) TSRMLS_CC);
 
        if (EG(exception)) {
-               zend_exception_error(EG(exception) TSRMLS_CC);
+               zend_exception_error(EG(exception), E_ERROR TSRMLS_CC);
        }
 
        CG(active_op_array)->last -= 1; /* get rid of that ZEND_RETURN */
index 74129abe5cffb069502d717f8bd19f6b8c03b6b9..4938d9c932b3637ade5cb00c83c987c525476a6a 100644 (file)
@@ -1127,7 +1127,7 @@ int main(int argc, char *argv[])
                                        }
 
                                        if (EG(exception)) {
-                                               zend_exception_error(EG(exception) TSRMLS_CC);
+                                               zend_exception_error(EG(exception), E_WARNING TSRMLS_CC);
                                        }
 
                                        php_last_char = '\0';