From e962769fee59a723b53c26c0331ecc855e724e66 Mon Sep 17 00:00:00 2001 From: Zeev Suraski Date: Mon, 12 Jun 2000 20:31:02 +0000 Subject: [PATCH] Return the previous error handler from set_error_handler() --- Zend/zend_builtin_functions.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) 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); + } } /* }}} */ -- 2.40.0