diff -ruaN drupal-7.35.orig/includes/module.inc drupal-7.35/includes/module.inc --- drupal-7.35.orig/includes/module.inc 2015-03-24 23:50:56.164295700 +0200 +++ drupal-7.35/includes/module.inc 2015-03-24 23:48:11.000000000 +0200 @@ -392,12 +392,6 @@ // This module is not found in the filesystem, abort. return FALSE; } - if ($module_data[$module]->status) { - // Skip already enabled modules. - unset($module_list[$module]); - continue; - } - $module_list[$module] = $module_data[$module]->sort; // Add dependencies to the list, with a placeholder weight. // The new modules will be processed as the while loop continues. @@ -408,6 +402,15 @@ } } + // Handle modules removal separatelly to prevent looping caused dependency loop between enabled modules. + foreach (array_keys($module_list) as $module) { + // Remove already enabled modules. + if ($module_data[$module]->status) { + // Skip already enabled modules. + unset($module_list[$module]); + } + } + if (!$module_list) { // Nothing to do. All modules already enabled. return TRUE;