diff --git includes/module.inc includes/module.inc
index a65a432..22fb0a2 100644
--- includes/module.inc
+++ includes/module.inc
@@ -532,13 +532,13 @@ function module_disable($module_list, $disable_dependents = TRUE) {
   }
 
   if (!empty($invoke_modules)) {
+    // Invoke hook_modules_disabled() before clearing the caches, so hook
+    // implementations are still able to invoke module hooks.
+    module_invoke_all('modules_disabled', $invoke_modules);
     // Refresh the module list to exclude the disabled modules.
     system_list_reset();
     module_list(TRUE);
     module_implements('', FALSE, TRUE);
-    // Invoke hook_modules_disabled before disabling modules,
-    // so we can still call module hooks to get information.
-    module_invoke_all('modules_disabled', $invoke_modules);
     // Update the registry to remove the newly-disabled module.
     registry_update();
     _system_update_bootstrap_status();
