Index: includes/install.inc =================================================================== RCS file: /cvs/drupal/drupal/includes/install.inc,v retrieving revision 1.142 diff -u -p -r1.142 install.inc --- includes/install.inc 22 Aug 2010 15:31:18 -0000 1.142 +++ includes/install.inc 24 Aug 2010 19:41:16 -0000 @@ -587,6 +587,24 @@ function drupal_install_system() { * The modules to uninstall. */ function drupal_uninstall_modules($module_list = array()) { + // Get all module data so we can sort. + $module_data = system_rebuild_module_data(); + // Create an associative array with weights as values. + $module_list = array_flip(array_values($module_list)); + + while (list($module) = each($module_list)) { + if (!isset($module_data[$module]) || drupal_get_installed_schema_version($module) == SCHEMA_UNINSTALLED) { + // This module doesn't exist or is already uninstalled, skip it. + unset($module_list[$module]); + continue; + } + $module_list[$module] = $module_data[$module]->sort; + } + + // Sort the module list by pre-calculated weights. + asort($module_list); + $module_list = array_keys($module_list); + foreach ($module_list as $module) { // First, retrieve all the module's menu paths from db. drupal_load('module', $module);