Index: branches/version-2/data/class/helper/SC_Helper_Session.php
===================================================================
--- branches/version-2/data/class/helper/SC_Helper_Session.php	(revision 16850)
+++ branches/version-2/data/class/helper/SC_Helper_Session.php	(revision 17529)
@@ -13,5 +13,7 @@
   * @version $Id$
   */
- class SC_Helper_Session {
+class SC_Helper_Session {
+
+    var $objDb;
 
      // }}}
@@ -24,13 +26,11 @@
       */
      function SC_Helper_Session() {
-         $objDb = new SC_Helper_DB_Ex();
-         if($objDb->sfTabaleExists("dtb_session")) {
-             session_set_save_handler(array(&$this, "sfSessOpen"),
-                                      array(&$this, "sfSessClose"),
-                                      array(&$this, "sfSessRead"),
-                                      array(&$this, "sfSessWrite"),
-                                      array(&$this, "sfSessDestroy"),
-                                      array(&$this, "sfSessGc"));
-         }
+         $this->objDb = new SC_Helper_DB_Ex();
+         session_set_save_handler(array(&$this, "sfSessOpen"),
+                                  array(&$this, "sfSessClose"),
+                                  array(&$this, "sfSessRead"),
+                                  array(&$this, "sfSessWrite"),
+                                  array(&$this, "sfSessDestroy"),
+                                  array(&$this, "sfSessGc"));
      }
 
@@ -65,10 +65,11 @@
       */
      function sfSessRead($id) {
+         if (!$this->objDb->sfTabaleExists("dtb_session")) return '';
          $objQuery = new SC_Query();
          $arrRet = $objQuery->select("sess_data", "dtb_session", "sess_id = ?", array($id));
          if (empty($arrRet)) {
-             return null;
+             return '';
          } else {
-             return($arrRet[0]['sess_data']);
+             return $arrRet[0]['sess_data'];
          }
      }
@@ -83,4 +84,5 @@
      function sfSessWrite($id, $sess_data)
      {
+         if (!$this->objDb->sfTabaleExists("dtb_session")) return false;
          $objQuery = new SC_Query();
          $count = $objQuery->count("dtb_session", "sess_id = ?", array($id));
@@ -113,4 +115,5 @@
       */
      function sfSessDestroy($id) {
+         if (!$this->objDb->sfTabaleExists("dtb_session")) return false;
          $objQuery = new SC_Query();
          $objQuery->delete("dtb_session", "sess_id = ?", array($id));
@@ -127,4 +130,5 @@
      function sfSessGc($maxlifetime) {
          // MAX_LIFETIME以上更新されていないセッションを削除する。
+         if (!$this->objDb->sfTabaleExists("dtb_session")) return false;
          $objQuery = new SC_Query();
          $where = "update_date < current_timestamp + '-". MAX_LIFETIME . " secs'";
