OSDN Git Service

- fixed bug newly introduced E_DEPRECATED in PHP 5.3.0 emits Fatal Error.
authorYoshinari Takaoka <mumumu@mumumu.org>
Thu, 27 Aug 2009 04:17:39 +0000 (13:17 +0900)
committerYoshinari Takaoka <mumumu@mumumu.org>
Thu, 27 Aug 2009 04:17:39 +0000 (13:17 +0900)
CHANGES
Ethna.php
class/Ethna_Error.php

diff --git a/CHANGES b/CHANGES
index 47a1415..63618cf 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -26,6 +26,7 @@
 
 - ethna make-plugin-package のデフォルトインストールディレクトリが誤っていたバグを修正
 - iniディレクティブ date.timezone が設定されてないために、E_WARNING が PHP 5.3.0 で出ていたバグを修正
+- PHP 5.3.0 で新設された E_DEPRECATED を ON にすると Fatal Error が起きるバグを修正 (#18418)
 - Ethna_Plugin::includePlugin メソッドの実装が動作するものではなかったので変更
 - Ethna_Plugin_Cachemanager のクラスのプロパティに指定する $namespace が意味をなしていなかったので修正 (#17753)
 - PROJECT_DIR/lib/Ethna/extlib 以下にファイルを設置するタイプのプラグインを pear-local などでインストールすると、それ以後
index 789b3d5..2fd57b8 100644 (file)
--- a/Ethna.php
+++ b/Ethna.php
@@ -51,7 +51,7 @@ if (!defined('DIRECTORY_SEPARATOR')) {
 }
 
 /** バージョン定義 */
-define('ETHNA_VERSION', '2.5.0-preview6 $Git$');
+define('ETHNA_VERSION', '2.5.0-preview6 Git');
 
 /**
  * ダミーのエラーモード
@@ -309,10 +309,13 @@ define('E_PLUGIN_NOTFOUND', 196);
 /** エラーコード: プラグインエラー(その他) */
 define('E_PLUGIN_GENERAL', 197);
 
+/** PHP 5との互換保持定義 */
 if (defined('E_STRICT') == false) {
-    /** PHP 5との互換保持定義 */
     define('E_STRICT', 2048);
 }
+if (defined('E_DEPRECATED') == false) {
+    define('E_DEPRECATED', 8192);
+}
 
 /** Ethnaグローバル変数: エラーコールバック関数 */
 $GLOBALS['_Ethna_error_callback_list'] = array();
index 3963871..ef61ab1 100644 (file)
@@ -20,7 +20,8 @@
  */
 function ethna_error_handler($errno, $errstr, $errfile, $errline)
 {
-    if ($errno === E_STRICT || ($errno & error_reporting()) === 0) {
+    if ($errno === E_STRICT || $errno === E_DEPRECATED
+    || ($errno & error_reporting()) === 0) {
         return;
     }
 
@@ -41,6 +42,7 @@ function ethna_error_handler($errno, $errstr, $errfile, $errline)
     case E_NOTICE:
     case E_USER_NOTICE:
     case E_STRICT:
+    case E_DEPRECATED:
         $php_errno = 'Notice'; break;
     default:
         $php_errno = 'Unknown error'; break;