]> granicus.if.org Git - php/commitdiff
fix Bug #937 throwError() treats every call as static
authorGreg Beaver <cellog@php.net>
Sat, 3 Apr 2004 06:28:54 +0000 (06:28 +0000)
committerGreg Beaver <cellog@php.net>
Sat, 3 Apr 2004 06:28:54 +0000 (06:28 +0000)
fix Bug #964 PEAR_ERROR_EXCEPTION causes fatal error

pear/PEAR.php
pear/package-PEAR.xml

index 7645d9717f1c147102dc67aae9730371107e8641..39089f6844da363ccca1faaddc6123e492e264a5 100644 (file)
@@ -26,6 +26,10 @@ define('PEAR_ERROR_PRINT',      2);
 define('PEAR_ERROR_TRIGGER',    4);
 define('PEAR_ERROR_DIE',        8);
 define('PEAR_ERROR_CALLBACK',  16);
+/**
+ * WARNING: obsolete
+ * @deprecated
+ */
 define('PEAR_ERROR_EXCEPTION', 32);
 define('PEAR_ZE2', (function_exists('version_compare') &&
                     version_compare(zend_version(), "2-dev", "ge")));
@@ -306,11 +310,11 @@ class PEAR
         }
 
         switch ($mode) {
+            case PEAR_ERROR_EXCEPTION:
             case PEAR_ERROR_RETURN:
             case PEAR_ERROR_PRINT:
             case PEAR_ERROR_TRIGGER:
             case PEAR_ERROR_DIE:
-            case PEAR_ERROR_EXCEPTION:
             case null:
                 $setmode = $mode;
                 $setoptions = $options;
@@ -549,7 +553,7 @@ class PEAR
                          $code = null,
                          $userinfo = null)
     {
-        if (isset($this) && is_subclass_of($this, 'PEAR_Error')) {
+        if (isset($this) && is_a($this, 'PEAR')) {
             return $this->raiseError($message, $code, null, null, $userinfo);
         } else {
             return PEAR::raiseError($message, $code, null, null, $userinfo);
@@ -774,8 +778,9 @@ class PEAR_Error
                 call_user_func($this->callback, $this);
             }
         }
-        if (PEAR_ZE2 && $this->mode & PEAR_ERROR_EXCEPTION) {
-            eval('throw $this;');
+        if ($this->mode & PEAR_ERROR_EXCEPTION) {
+            trigger_error("PEAR_ERROR_EXCEPTION is obsolete, use class PEAR_ErrorStack for exceptions", E_USER_WARNING);
+            eval('$e = new Exception($this->message, $this->code);$e->PEAR_Error = $this;throw($e);');
         }
     }
 
index 0d809d6c90f7405df8ccb9667615495f40cd6b79..c0aabb1fd8b3b03c48046e5168223e2b964fa7ad 100644 (file)
@@ -55,6 +55,8 @@ PEAR Installer:
 
  * Bug #534  pear search doesn't list unstable releases
  * Bug #933  CMD Usability Patch 
+ * Bug #937  throwError() treats every call as static 
+ * Bug #964 PEAR_ERROR_EXCEPTION causes fatal error 
  * Bug #1008 safe mode raises warning
 
 PEAR_ErrorStack: