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;
}
}