Index: modules/user/user.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/user/user.module,v
retrieving revision 1.963
diff -u -p -r1.963 user.module
--- modules/user/user.module	9 Feb 2009 07:36:15 -0000	1.963
+++ modules/user/user.module	15 Feb 2009 00:52:38 -0000
@@ -572,10 +572,10 @@ function user_role_permissions($roles = 
     if ($fetch) {
       // Get from the database permissions that were not in the static variable.
       // Only role IDs with at least one permission assigned will return rows.
-      $result = db_query("SELECT r.rid, p.permission FROM {role} r INNER JOIN {role_permission} p ON p.rid = r.rid WHERE r.rid IN (:fetch)", array(':fetch' => $fetch));
+      $result = db_query("SELECT rid, permission FROM {role_permission} WHERE rid IN (:fetch)", array(':fetch' => $fetch));
 
-      while ($row = db_fetch_array($result)) {
-        $stored_permissions[$row['rid']][$row['permission']] = TRUE;
+      foreach ($result as $row) {
+        $stored_permissions[$row->rid][$row->permission] = TRUE;
       }
       foreach ($fetch as $rid) {
         // For every rid, we know we at least assigned an empty array.
