summaryrefslogtreecommitdiff
path: root/modules/system
diff options
context:
space:
mode:
authorDries Buytaert <dries@buytaert.net>2010-11-24 16:47:44 +0000
committerDries Buytaert <dries@buytaert.net>2010-11-24 16:47:44 +0000
commitc76655c98bc19acd2a7a023d23bb23564f5fa777 (patch)
treededcdad2130dfd410363ec1b00023ec69ac53762 /modules/system
parentb7459d8eb3def52ecdd35c65a55fac7e999f6cde (diff)
downloadbrdo-c76655c98bc19acd2a7a023d23bb23564f5fa777.tar.gz
brdo-c76655c98bc19acd2a7a023d23bb23564f5fa777.tar.bz2
- Patch #794936 by c960657, amateescu: system_rebuild_module_data() called twice on admin/build/modules.
Diffstat (limited to 'modules/system')
-rw-r--r--modules/system/system.module19
1 files changed, 13 insertions, 6 deletions
diff --git a/modules/system/system.module b/modules/system/system.module
index 98df4868b..13aa1c06c 100644
--- a/modules/system/system.module
+++ b/modules/system/system.module
@@ -2361,12 +2361,19 @@ function _system_rebuild_module_data() {
* Array of all available modules and their data.
*/
function system_rebuild_module_data() {
- $modules = _system_rebuild_module_data();
- ksort($modules);
- system_get_files_database($modules, 'module');
- system_update_files_database($modules, 'module');
- $modules = _module_build_dependencies($modules);
- return $modules;
+ $modules_cache = &drupal_static(__FUNCTION__);
+ // Only rebuild once per request. $modules and $modules_cache cannot be
+ // combined into one variable, because the $modules_cache variable is reset by
+ // reference from system_list_reset() during the rebuild.
+ if (!isset($modules_cache)) {
+ $modules = _system_rebuild_module_data();
+ ksort($modules);
+ system_get_files_database($modules, 'module');
+ system_update_files_database($modules, 'module');
+ $modules = _module_build_dependencies($modules);
+ $modules_cache = $modules;
+ }
+ return $modules_cache;
}
/**