From: Zeev Suraski Date: Mon, 12 Jun 2000 20:31:02 +0000 (+0000) Subject: Return the previous error handler from set_error_handler() X-Git-Tag: php-4.0.1RC~246 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=e962769fee59a723b53c26c0331ecc855e724e66;p=php Return the previous error handler from set_error_handler() --- diff --git a/Zend/zend_builtin_functions.c b/Zend/zend_builtin_functions.c index 0c3d48eac9..f0ca2cc4ec 100644 --- a/Zend/zend_builtin_functions.c +++ b/Zend/zend_builtin_functions.c @@ -755,11 +755,13 @@ ZEND_FUNCTION(trigger_error) /* }}} */ -/* {{{ proto int set_error_handler(string error_handler) - Sets a user-defined error handler function */ +/* {{{ proto string set_error_handler(string error_handler) + 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; + zend_bool had_orig_error_handler=0; if (ZEND_NUM_ARGS()!=1 || zend_get_parameters_ex(1, &error_handler)==FAILURE) { ZEND_WRONG_PARAM_COUNT(); @@ -767,7 +769,8 @@ ZEND_FUNCTION(set_error_handler) convert_to_string_ex(error_handler); if (EG(user_error_handler)) { - zval_dtor(EG(user_error_handler)); + had_orig_error_handler = 1; + *return_value = *EG(user_error_handler); } else { ALLOC_ZVAL(EG(user_error_handler)); } @@ -781,7 +784,9 @@ ZEND_FUNCTION(set_error_handler) *EG(user_error_handler) = **error_handler; zval_copy_ctor(EG(user_error_handler)); - RETURN_TRUE; + if (!had_orig_error_handler) { + RETURN_STRINGL("", 0, 1); + } } /* }}} */