From c76655c98bc19acd2a7a023d23bb23564f5fa777 Mon Sep 17 00:00:00 2001 From: Dries Buytaert Date: Wed, 24 Nov 2010 16:47:44 +0000 Subject: - Patch #794936 by c960657, amateescu: system_rebuild_module_data() called twice on admin/build/modules. --- modules/system/system.module | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) (limited to 'modules/system') 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; } /** -- cgit v1.2.3