Fix $replace parameter handling in get_config()

Code was reached only on first function call, then short-circuited because of the reference cache.
diff --git a/system/core/CodeIgniter.php b/system/core/CodeIgniter.php
index a026920..c962fda 100644
--- a/system/core/CodeIgniter.php
+++ b/system/core/CodeIgniter.php
@@ -88,7 +88,7 @@
  * The subclass prefix allows CI to know if a core class is
  * being extended via a library in the local application
  * "libraries" folder. Since CI allows config items to be
- * overriden via data set in the main index. php file,
+ * overriden via data set in the main index.php file,
  * before proceeding we need to know if a subclass_prefix
  * override exists. If so, we will set this value now,
  * before any classes are loaded
diff --git a/system/core/Common.php b/system/core/Common.php
index 21e1df9..a90a3ab 100644
--- a/system/core/Common.php
+++ b/system/core/Common.php
@@ -230,39 +230,43 @@
 
 		if (isset($_config))
 		{
-			return $_config[0];
+			$config =& $_config[0];
 		}
+		else
+		{
+			$file_path = APPPATH.'config/config.php';
+			$found = FALSE;
+			if (file_exists($file_path))
+			{
+				$found = TRUE;
+				require($file_path);
+			}
 
-		$file_path = APPPATH.'config/config.php';
-		$found = FALSE;
-		if (file_exists($file_path))
-		{
-			$found = TRUE;
-			require($file_path);
-		}
+			// Is the config file in the environment folder?
+			if (file_exists($file_path = APPPATH.'config/'.ENVIRONMENT.'/config.php'))
+			{
+				require($file_path);
+			}
+			elseif ( ! $found)
+			{
+				set_status_header(503);
+				echo 'The configuration file does not exist.';
+				exit(EXIT_CONFIG);
+			}
 
-		// Is the config file in the environment folder?
-		if (file_exists($file_path = APPPATH.'config/'.ENVIRONMENT.'/config.php'))
-		{
-			require($file_path);
-		}
-		elseif ( ! $found)
-		{
-			set_status_header(503);
-			echo 'The configuration file does not exist.';
-			exit(EXIT_CONFIG);
-		}
+			// Does the $config array exist in the file?
+			if ( ! isset($config) OR ! is_array($config))
+			{
+				set_status_header(503);
+				echo 'Your config file does not appear to be formatted correctly.';
+				exit(EXIT_CONFIG);
+			}
 
-		// Does the $config array exist in the file?
-		if ( ! isset($config) OR ! is_array($config))
-		{
-			set_status_header(503);
-			echo 'Your config file does not appear to be formatted correctly.';
-			exit(EXIT_CONFIG);
+			$_config[0] =& $config;
 		}
 
 		// Are any values being dynamically replaced?
-		if (count($replace) > 0)
+		if (!empty($replace))
 		{
 			foreach ($replace as $key => $val)
 			{
@@ -273,7 +277,7 @@
 			}
 		}
 
-		return $_config[0] =& $config;
+		return $config;
 	}
 }