cvs: ZendEngine2 / zend_builtin_functions.c zend_execute_API.c zend_globals.h zend_operators.c

From: Date: Sat, 10 Jan 2004 11:43:42 +0000
Subject: cvs: ZendEngine2 / zend_builtin_functions.c zend_execute_API.c zend_globals.h zend_operators.c
Groups: php.zend-engine.cvs 
Request: Send a blank email to php-zend-engine-cvs+get-2198@lists.php.net to get a copy of this message
zeev Sat Jan 10 06:43:42 2004 EDT Modified files: /ZendEngine2 zend_builtin_functions.c zend_execute_API.c zend_globals.h zend_operators.c Log: Added error mask to set_error_handler() Patch by Christian Schneider <cschneid@cschneid.com> Index: ZendEngine2/zend_builtin_functions.c diff -u ZendEngine2/zend_builtin_functions.c:1.221 ZendEngine2/zend_builtin_functions.c:1.222 --- ZendEngine2/zend_builtin_functions.c:1.221 Thu Jan 8 12:31:47 2004 +++ ZendEngine2/zend_builtin_functions.c Sat Jan 10 06:43:41 2004 @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: zend_builtin_functions.c,v 1.221 2004/01/08 17:31:47 sniper Exp $ */ +/* $Id: zend_builtin_functions.c,v 1.222 2004/01/10 11:43:41 zeev Exp $ */ #include "zend.h" #include "zend_API.h" @@ -934,19 +934,20 @@ /* }}} */ -/* {{{ proto string set_error_handler(string error_handler) +/* {{{ proto string set_error_handler(string error_handler [, int error_types]) Sets a user-defined error handler function. Returns the previously defined error handler, or false on error */ ZEND_FUNCTION(set_error_handler) { - zval **error_handler; + zval *error_handler; zend_bool had_orig_error_handler=0; char *error_handler_name = NULL; + long error_type = E_ALL; - if (ZEND_NUM_ARGS()!=1 || zend_get_parameters_ex(1, &error_handler)==FAILURE) { - ZEND_WRONG_PARAM_COUNT(); + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "z|l", &error_handler, &error_type) == FAILURE) { + return; } - if (!zend_is_callable(*error_handler, 0, &error_handler_name)) { + if (!zend_is_callable(error_handler, 0, &error_handler_name)) { zend_error(E_WARNING, "%s() expects the argument (%s) to be a valid callback", get_active_function_name(TSRMLS_C), error_handler_name?error_handler_name:"unknown"); efree(error_handler_name); @@ -958,17 +959,19 @@ had_orig_error_handler = 1; *return_value = *EG(user_error_handler); zval_copy_ctor(return_value); + zend_stack_push(&EG(user_error_handlers_error_reporting), &EG(user_error_handler_error_reporting), sizeof(EG(user_error_handler_error_reporting))); zend_ptr_stack_push(&EG(user_error_handlers), EG(user_error_handler)); } ALLOC_ZVAL(EG(user_error_handler)); - if (!zend_is_true(*error_handler)) { /* unset user-defined handler */ + if (!zend_is_true(error_handler)) { /* unset user-defined handler */ FREE_ZVAL(EG(user_error_handler)); EG(user_error_handler) = NULL; RETURN_TRUE; } - *EG(user_error_handler) = **error_handler; + EG(user_error_handler_error_reporting) = (int)error_type; + *EG(user_error_handler) = *error_handler; zval_copy_ctor(EG(user_error_handler)); if (!had_orig_error_handler) { @@ -988,6 +991,8 @@ if (zend_ptr_stack_num_elements(&EG(user_error_handlers))==0) { EG(user_error_handler) = NULL; } else { + EG(user_error_handler_error_reporting) = zend_stack_int_top(&EG(user_error_handlers_error_reporting)); + zend_stack_del_top(&EG(user_error_handlers_error_reporting)); EG(user_error_handler) = zend_ptr_stack_pop(&EG(user_error_handlers)); } RETURN_TRUE; Index: ZendEngine2/zend_execute_API.c diff -u ZendEngine2/zend_execute_API.c:1.249 ZendEngine2/zend_execute_API.c:1.250 --- ZendEngine2/zend_execute_API.c:1.249 Thu Jan 8 12:31:47 2004 +++ ZendEngine2/zend_execute_API.c Sat Jan 10 06:43:41 2004 @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: zend_execute_API.c,v 1.249 2004/01/08 17:31:47 sniper Exp $ */ +/* $Id: zend_execute_API.c,v 1.250 2004/01/10 11:43:41 zeev Exp $ */ #include <stdio.h> #include <signal.h> @@ -167,6 +167,7 @@ EG(current_execute_data) = NULL; + zend_stack_init(&EG(user_error_handlers_error_reporting)); zend_ptr_stack_init(&EG(user_error_handlers)); zend_ptr_stack_init(&EG(user_exception_handlers)); @@ -229,6 +230,8 @@ FREE_ZVAL(zeh); } + zend_stack_destroy(&EG(user_error_handlers_error_reporting)); + zend_stack_init(&EG(user_error_handlers_error_reporting)); zend_ptr_stack_clean(&EG(user_error_handlers), ZVAL_DESTRUCTOR, 1); zend_ptr_stack_clean(&EG(user_exception_handlers), ZVAL_DESTRUCTOR, 1); } zend_end_try(); @@ -287,6 +290,7 @@ zend_hash_destroy(&EG(included_files)); zend_ptr_stack_destroy(&EG(arg_types_stack)); + zend_stack_destroy(&EG(user_error_handlers_error_reporting)); zend_ptr_stack_destroy(&EG(user_error_handlers)); zend_ptr_stack_destroy(&EG(user_exception_handlers)); zend_objects_store_destroy(&EG(objects_store)); Index: ZendEngine2/zend_globals.h diff -u ZendEngine2/zend_globals.h:1.130 ZendEngine2/zend_globals.h:1.131 --- ZendEngine2/zend_globals.h:1.130 Thu Jan 8 12:31:47 2004 +++ ZendEngine2/zend_globals.h Sat Jan 10 06:43:42 2004 @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: zend_globals.h,v 1.130 2004/01/08 17:31:47 sniper Exp $ */ +/* $Id: zend_globals.h,v 1.131 2004/01/10 11:43:42 zeev Exp $ */ #ifndef ZEND_GLOBALS_H #define ZEND_GLOBALS_H @@ -214,8 +214,10 @@ zval *garbage[2]; int garbage_ptr; + int user_error_handler_error_reporting; zval *user_error_handler; zval *user_exception_handler; + zend_stack user_error_handlers_error_reporting; zend_ptr_stack user_error_handlers; zend_ptr_stack user_exception_handlers; Index: ZendEngine2/zend_operators.c diff -u ZendEngine2/zend_operators.c:1.173 ZendEngine2/zend_operators.c:1.174 --- ZendEngine2/zend_operators.c:1.173 Thu Jan 8 12:31:48 2004 +++ ZendEngine2/zend_operators.c Sat Jan 10 06:43:42 2004 @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: zend_operators.c,v 1.173 2004/01/08 17:31:48 sniper Exp $ */ +/* $Id: zend_operators.c,v 1.174 2004/01/10 11:43:42 zeev Exp $ */ #include <ctype.h> @@ -33,8 +33,13 @@ #include "ext/bcmath/number.h" #endif +<<<<<<< zend_operators.c +#define LONG_SIGN_MASK (1L << (8*SIZEOF_LONG-1)) + +======= #define LONG_SIGN_MASK (1L << (8*sizeof(long)-1)) +>>>>>>> 1.162 ZEND_API int zend_atoi(const char *str, int str_len) { int retval;

« previous php.zend-engine.cvs (#2198) next »