Index: modules/system/system.test
===================================================================
RCS file: /cvs/drupal/drupal/modules/system/system.test,v
retrieving revision 1.51
diff -u -p -r1.51 system.test
--- modules/system/system.test	27 Jun 2009 10:13:28 -0000	1.51
+++ modules/system/system.test	27 Jun 2009 12:50:12 -0000
@@ -148,6 +148,13 @@ class EnableDisableTestCase extends Modu
     $this->assertModules(array('aggregator'), FALSE);
     $this->assertTableCount('aggregator', FALSE);
     $this->assertLogMessage('system', "%module module uninstalled.", array('%module' => 'aggregator'), WATCHDOG_INFO);
+
+    // Reinstall (and enable) aggregator module.
+    $edit = array();
+    $edit['modules[Core][aggregator][enable]'] = 'aggregator';
+    $this->drupalPost('admin/build/modules', $edit, t('Save configuration'));
+    $this->assertText(t('The configuration options have been saved.'), t('Modules status has been updated.'));
+
   }
 }
 
Index: modules/user/user.admin.inc
===================================================================
RCS file: /cvs/drupal/drupal/modules/user/user.admin.inc,v
retrieving revision 1.58
diff -u -p -r1.58 user.admin.inc
--- modules/user/user.admin.inc	15 Jun 2009 09:49:58 -0000	1.58
+++ modules/user/user.admin.inc	27 Jun 2009 12:50:12 -0000
@@ -945,3 +945,24 @@ function user_modules_installed($modules
     }
   }
 }
+
+/**
+ * Implementation of hook_modules_uninstalled().
+ */
+function user_modules_uninstalled($modules) {
+  // Remove all permissions from the administrator role.
+  $rid = variable_get('user_admin_role', 0);
+  if ($rid) {
+    foreach ($modules as $module) {
+      if ($permissions = module_invoke($module, 'perm')) {
+        foreach (array_keys($permissions) as $permission) {
+          db_delete('role_permission')
+            ->condition('rid', $rid)
+            ->condition('permission', $permission)
+            ->execute();
+        }
+      }
+    }
+  }
+}
+
