]> granicus.if.org Git - php/commitdiff
Fix bug in pushErrorHandling() (fail under very specific circumstances)
authorTomas V.V.Cox <cox@php.net>
Sat, 6 Apr 2002 15:12:04 +0000 (15:12 +0000)
committerTomas V.V.Cox <cox@php.net>
Sat, 6 Apr 2002 15:12:04 +0000 (15:12 +0000)
pear/PEAR.php

index 7c5198b6b18f6eefec9957c19beee1b6565ee5f9..98804a17041eca5f199b5f9b7cf41cc518b924e3 100644 (file)
@@ -40,6 +40,7 @@ if (substr(PHP_OS, 0, 3) == 'WIN') {
 $GLOBALS['_PEAR_default_error_mode']     = PEAR_ERROR_RETURN;
 $GLOBALS['_PEAR_default_error_options']  = E_USER_NOTICE;
 $GLOBALS['_PEAR_destructor_object_list'] = array();
+$GLOBALS['_PEAR_error_handler_stack']    = array();
 
 /**
  * Base class for other PEAR classes.  Provides rudimentary
@@ -416,17 +417,14 @@ class PEAR
     function pushErrorHandling($mode, $options = null)
     {
         $stack = &$GLOBALS['_PEAR_error_handler_stack'];
-        if (!is_array($stack)) {
-            if (isset($this)) {
-                $def_mode = &$this->_default_error_mode;
-                $def_options = &$this->_default_error_options;
-            } else {
-                $def_mode = &$GLOBALS['_PEAR_default_error_mode'];
-                $def_options = &$GLOBALS['_PEAR_default_error_options'];
-            }
-            $stack = array();
-            $stack[] = array($def_mode, $def_options);
+        if (isset($this)) {
+            $def_mode    = &$this->_default_error_mode;
+            $def_options = &$this->_default_error_options;
+        } else {
+            $def_mode    = &$GLOBALS['_PEAR_default_error_mode'];
+            $def_options = &$GLOBALS['_PEAR_default_error_options'];
         }
+        $stack[] = array($def_mode, $def_options);
 
         if (isset($this)) {
             $this->setErrorHandling($mode, $options);