Commit:    f28c128b207ae2c6ea4d8f6c2e66f5b709210a23
Author:    Nikita Popov <ni...@php.net>         Sat, 24 Mar 2012 13:10:51 +0100
Parents:   c815dd74bc42c8f36ba35b910f45e85a645d7e3d
Branches:  master

Link:       
http://git.php.net/?p=php-src.git;a=commitdiff;h=f28c128b207ae2c6ea4d8f6c2e66f5b709210a23

Log:
Return previous error handler when resetting the error handler

set_error_handler(null) and set_exception_handler(null) now return the
previous error/exception handler instead of just returning bool(true).
This is consistent with the behavior of these functions with non-null
values.

Changed paths:
  M  Zend/tests/bug60738.phpt
  A  Zend/tests/bug60738_variation.phpt
  M  Zend/zend_builtin_functions.c


Diff:
diff --git a/Zend/tests/bug60738.phpt b/Zend/tests/bug60738.phpt
index e0c9793..e408071 100644
--- a/Zend/tests/bug60738.phpt
+++ b/Zend/tests/bug60738.phpt
@@ -3,15 +3,20 @@ Bug #60738 Allow 'set_error_handler' to handle NULL
 --FILE--
 <?php
 
-set_error_handler(function() { echo 'Intercepted error!', "\n"; });
+var_dump(set_error_handler(
+    function() { echo 'Intercepted error!', "\n"; }
+));
 
 trigger_error('Error!');
 
-set_error_handler(null);
+var_dump(set_error_handler(null));
 
 trigger_error('Error!');
 ?>
 --EXPECTF--
+NULL
 Intercepted error!
+object(Closure)#1 (0) {
+}
 
 Notice: Error! in %s on line %d
diff --git a/Zend/tests/bug60738_variation.phpt 
b/Zend/tests/bug60738_variation.phpt
new file mode 100644
index 0000000..d7cf00e
--- /dev/null
+++ b/Zend/tests/bug60738_variation.phpt
@@ -0,0 +1,23 @@
+--TEST--
+Bug #60738 Allow 'set_error_handler' to handle NULL
+--FILE--
+<?php
+
+var_dump(set_exception_handler(
+    function() { echo 'Intercepted exception!', "\n"; }
+));
+
+var_dump(set_exception_handler(null));
+
+throw new Exception('Exception!');
+?>
+--EXPECTF--
+NULL
+object(Closure)#1 (0) {
+}
+
+Fatal error: Uncaught exception 'Exception' with message 'Exception!' in %s:%d
+Stack trace:
+#0 {main}
+  thrown in %s on line %d
+
diff --git a/Zend/zend_builtin_functions.c b/Zend/zend_builtin_functions.c
index 204c7d3..fdfe3db 100644
--- a/Zend/zend_builtin_functions.c
+++ b/Zend/zend_builtin_functions.c
@@ -1543,7 +1543,7 @@ ZEND_FUNCTION(set_error_handler)
        if (Z_TYPE_P(error_handler) == IS_NULL) { /* unset user-defined handler 
*/
                FREE_ZVAL(EG(user_error_handler));
                EG(user_error_handler) = NULL;
-               RETURN_TRUE;
+               return;
        }
 
        EG(user_error_handler_error_reporting) = (int)error_type;
@@ -1614,7 +1614,7 @@ ZEND_FUNCTION(set_exception_handler)
        if (Z_TYPE_P(exception_handler) == IS_NULL) { /* unset user-defined 
handler */
                FREE_ZVAL(EG(user_exception_handler));
                EG(user_exception_handler) = NULL;
-               RETURN_TRUE;
+               return;
        }
 
        MAKE_COPY_ZVAL(&exception_handler, EG(user_exception_handler))


--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to