Fixed select_driver(), cookie sess_destroy(), and native cookie name conflict
diff --git a/system/core/Loader.php b/system/core/Loader.php
index a62cf06..01d99dd 100644
--- a/system/core/Loader.php
+++ b/system/core/Loader.php
@@ -911,7 +911,7 @@
 			$class = substr($class, $last_slash);
 
 			// Check for match and driver base class
-			if (strtolower($subdir) == strtolower($class) && ! class_exists('CI_Driver_Library'))
+			if (strtolower(trim($subdir, '/')) == strtolower($class) && ! class_exists('CI_Driver_Library'))
 			{
 				// We aren't instantiating an object here, just making the base class available
 				require BASEPATH.'libraries/Driver.php';
@@ -1005,6 +1005,12 @@
 			$path = strtolower($class).'/'.$class;
 			return $this->_ci_load_class($path, $params);
 		}
+		else if (ucfirst($subdir) != $subdir)
+		{
+			// Lowercase subdir failed - retry capitalized
+			$path = ucfirst($subdir).$class;
+			return $this->_ci_load_class($path, $params);
+		}
 
 		// If we got this far we were unable to find the requested class.
 		// We do not issue errors if the load call failed due to a duplicate request
diff --git a/system/libraries/Session/Session.php b/system/libraries/Session/Session.php
index 97eab80..1f24456 100755
--- a/system/libraries/Session/Session.php
+++ b/system/libraries/Session/Session.php
@@ -141,14 +141,17 @@
 			$child = str_replace($this->lib_name.'_', '', $driver);
 			if (isset($this->$child))
 			{
-				// Make driver current and sync userdata
-				$this->current = $this->$child;
-				$this->userdata =& $this->current->get_userdata();
+				// See if driver is already current
+				if ($this->$child !== $this->current) {
+					// Make driver current and sync userdata
+					$this->current = $this->$child;
+					$this->userdata =& $this->current->get_userdata();
+				}
 			}
 			else
 			{
 				// Load new driver
-				$this->load_driver($driver);
+				$this->load_driver($child);
 			}
 		}
 	}
diff --git a/system/libraries/Session/drivers/Session_cookie.php b/system/libraries/Session/drivers/Session_cookie.php
index 8ac92e4..89e8138 100755
--- a/system/libraries/Session/drivers/Session_cookie.php
+++ b/system/libraries/Session/drivers/Session_cookie.php
@@ -325,7 +325,7 @@
 	public function sess_destroy()
 	{
 		// Kill the session DB row
-		if ($this->sess_use_database === TRUE && $this->has_userdata('session_id'))
+		if ($this->sess_use_database === TRUE && isset($this->userdata['session_id']))
 		{
 			$this->CI->db->where('session_id', $this->userdata['session_id']);
 			$this->CI->db->delete($this->sess_table_name);
diff --git a/system/libraries/Session/drivers/Session_native.php b/system/libraries/Session/drivers/Session_native.php
index 04c9855..8ba8e74 100755
--- a/system/libraries/Session/drivers/Session_native.php
+++ b/system/libraries/Session/drivers/Session_native.php
@@ -56,7 +56,8 @@
 		// Set session name, if specified
 		if ($config['sess_cookie_name'])
 		{
-			$name = $config['sess_cookie_name'];
+			// Differentiate name from cookie driver with '_id' suffix
+			$name = $config['sess_cookie_name'].'_id';
 			if ($config['cookie_prefix'])
 			{
 				// Prepend cookie prefix