]> granicus.if.org Git - php/commitdiff
Fix for bug #21094 (set_error_handler can not accept methods),
authorStanislav Malyshev <stas@php.net>
Sun, 20 Apr 2003 14:18:15 +0000 (14:18 +0000)
committerStanislav Malyshev <stas@php.net>
Sun, 20 Apr 2003 14:18:15 +0000 (14:18 +0000)
by Timm Friebe

Zend/zend_builtin_functions.c

index bb26526e105b37825bfed23f822bafd980e8d591..baeae401ef2d5ca5f8d78f25189493699b1465ec 100644 (file)
@@ -968,12 +968,20 @@ ZEND_FUNCTION(set_error_handler)
 {
        zval **error_handler;
        zend_bool had_orig_error_handler=0;
-
+       char *error_handler_name;
        if (ZEND_NUM_ARGS()!=1 || zend_get_parameters_ex(1, &error_handler)==FAILURE) {
                ZEND_WRONG_PARAM_COUNT();
        }
 
-       convert_to_string_ex(error_handler);
+       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);
+               efree(error_handler_name);
+               return;
+       }
+       efree(error_handler_name);
+
        if (EG(user_error_handler)) {
                had_orig_error_handler = 1;
                *return_value = *EG(user_error_handler);