Fix a possible bug in DB() and renamed a variable
diff --git a/system/database/DB.php b/system/database/DB.php
index d06ffb4..8f9cb37 100755
--- a/system/database/DB.php
+++ b/system/database/DB.php
@@ -74,24 +74,24 @@
 		 *  parameter. DSNs must have this prototype:
 		 *  $dsn = 'driver://username:password@hostname/database';
 		 */
-		if (($dns = @parse_url($params)) === FALSE)
+		if (($dsn = @parse_url($params)) === FALSE)
 		{
 			show_error('Invalid DB Connection String');
 		}
 
 		$params = array(
-				'dbdriver'	=> $dns['scheme'],
-				'hostname'	=> (isset($dns['host'])) ? rawurldecode($dns['host']) : '',
-				'port'		=> (isset($dns['port'])) ? rawurldecode($dns['port']) : '',
-				'username'	=> (isset($dns['user'])) ? rawurldecode($dns['user']) : '',
-				'password'	=> (isset($dns['pass'])) ? rawurldecode($dns['pass']) : '',
-				'database'	=> (isset($dns['path'])) ? rawurldecode(substr($dns['path'], 1)) : ''
+				'dbdriver'	=> $dsn['scheme'],
+				'hostname'	=> (isset($dsn['host'])) ? rawurldecode($dsn['host']) : '',
+				'port'		=> (isset($dsn['port'])) ? rawurldecode($dsn['port']) : '',
+				'username'	=> (isset($dsn['user'])) ? rawurldecode($dsn['user']) : '',
+				'password'	=> (isset($dsn['pass'])) ? rawurldecode($dsn['pass']) : '',
+				'database'	=> (isset($dsn['path'])) ? rawurldecode(substr($dsn['path'], 1)) : ''
 			);
 
 		// were additional config items set?
-		if (isset($dns['query']))
+		if (isset($dsn['query']))
 		{
-			parse_str($dns['query'], $extra);
+			parse_str($dsn['query'], $extra);
 			foreach ($extra as $key => $val)
 			{
 				// booleans please
@@ -104,7 +104,10 @@
 					$val = FALSE;
 				}
 
-				$params[$key] = $val;
+				if ( ! isset($params[$key]))
+				{
+					$params[$key] = $val;
+				}
 			}
 		}
 	}
diff --git a/system/database/DB_driver.php b/system/database/DB_driver.php
index c4aa0be..3014919 100644
--- a/system/database/DB_driver.php
+++ b/system/database/DB_driver.php
@@ -40,6 +40,7 @@
  */
 class CI_DB_driver {
 
+	public $dsn;
 	public $username;
 	public $password;
 	public $hostname;