diff options
author | Dries Buytaert <dries@buytaert.net> | 2010-11-24 16:47:44 +0000 |
---|---|---|
committer | Dries Buytaert <dries@buytaert.net> | 2010-11-24 16:47:44 +0000 |
commit | c76655c98bc19acd2a7a023d23bb23564f5fa777 (patch) | |
tree | dedcdad2130dfd410363ec1b00023ec69ac53762 /modules/system | |
parent | b7459d8eb3def52ecdd35c65a55fac7e999f6cde (diff) | |
download | brdo-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.module | 19 |
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; } /** |