Fix config_item() returning stale values
Use case fixed:
config_item('foobar'); // returns "some value"
$CI->config->set_item('foobar', 'new value');
config_item('foobar'); // still returns "some value", expected "new value"
diff --git a/system/core/Common.php b/system/core/Common.php
index 93cd0a0..b95a05d 100644
--- a/system/core/Common.php
+++ b/system/core/Common.php
@@ -289,20 +289,15 @@
*/
function config_item($item)
{
- static $_config_item = array();
+ static $_config;
- if ( ! isset($_config_item[$item]))
+ if (empty($_config))
{
- $config =& get_config();
-
- if ( ! isset($config[$item]))
- {
- return FALSE;
- }
- $_config_item[$item] = $config[$item];
+ // references cannot be directly assigned to static variables, so we use an array
+ $_config[0] =& get_config();
}
- return $_config_item[$item];
+ return isset($_config[0][$item]) ? $_config[0][$item] : FALSE;
}
}