Index: modules/user/user.admin.inc
===================================================================
RCS file: /cvs/drupal/drupal/modules/user/user.admin.inc,v
retrieving revision 1.116
diff -u -p -r1.116 user.admin.inc
--- modules/user/user.admin.inc	29 Jul 2010 01:39:32 -0000	1.116
+++ modules/user/user.admin.inc	15 Aug 2010 01:40:30 -0000
@@ -662,41 +662,32 @@ function user_admin_permissions($form, $
   );
   // Render role/permission overview:
   $options = array();
-  $module_info = system_get_info('module');
   $hide_descriptions = system_admin_compact_mode();
 
-  // Get a list of all the modules implementing a hook_permission() and sort by
-  // display name.
-  $modules = array();
-  foreach (module_implements('permission') as $module) {
-    $modules[$module_info[$module]['name']] = $module;
-  }
-  ksort($modules);
-
-  foreach ($modules as $display_name => $module) {
-    if ($permissions = module_invoke($module, 'permission')) {
-      $form['permission'][] = array(
-        '#markup' => $module_info[$module]['name'],
-        '#id' => $module,
+  $module_info = system_get_info('module');
+
+  foreach (_user_get_permissions() as $module => $permissions) {
+    $form['permission'][] = array(
+      '#markup' => $module_info[$module]['name'],
+      '#id' => $module,
+    );
+    foreach ($permissions as $perm => $perm_item) {
+      // Fill in default values for the permission.
+      $perm_item += array(
+        'description' => '',
+        'restrict access' => FALSE,
+        'warning' => !empty($perm_item['restrict access']) ? t('Warning: Give to trusted roles only; this permission has security implications.') : '',
+      );
+      $options[$perm] = '';
+      $form['permission'][$perm] = array(
+        '#type' => 'item',
+        '#markup' => $perm_item['title'],
+        '#description' => theme('user_permission_description', array('permission_item' => $perm_item, 'hide' => $hide_descriptions)),
       );
-      foreach ($permissions as $perm => $perm_item) {
-        // Fill in default values for the permission.
-        $perm_item += array(
-          'description' => '',
-          'restrict access' => FALSE,
-          'warning' => !empty($perm_item['restrict access']) ? t('Warning: Give to trusted roles only; this permission has security implications.') : '',
-        );
-        $options[$perm] = '';
-        $form['permission'][$perm] = array(
-          '#type' => 'item',
-          '#markup' => $perm_item['title'],
-          '#description' => theme('user_permission_description', array('permission_item' => $perm_item, 'hide' => $hide_descriptions)),
-        );
-        foreach ($role_names as $rid => $name) {
-          // Builds arrays for checked boxes for each role
-          if (isset($role_permissions[$rid][$perm])) {
-            $status[$rid][] = $perm;
-          }
+      foreach ($role_names as $rid => $name) {
+        // Builds arrays for checked boxes for each role
+        if (isset($role_permissions[$rid][$perm])) {
+          $status[$rid][] = $perm;
         }
       }
     }
Index: modules/user/user.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/user/user.module,v
retrieving revision 1.1192
diff -u -p -r1.1192 user.module
--- modules/user/user.module	11 Aug 2010 14:21:39 -0000	1.1192
+++ modules/user/user.module	15 Aug 2010 01:40:31 -0000
@@ -3678,3 +3678,22 @@ function user_rdf_mapping() {
     ),
   );
 }
+
+/**
+ * Get a list of the modules that implement hook_permission().
+ *
+ * @return $modules
+ *   An associative array of permission definitions.
+ */
+function _user_get_permissions() {
+  // Get a list of all the modules implementing a hook_permission() and sort by
+  // display name.
+  $modules = array();
+
+  foreach (module_implements('permission') as $module) {
+    $modules[$module] = module_invoke($module, 'permission');     ;
+  }
+  ksort($modules);
+  
+  return $modules;
+}
