Index: modules/user/user.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/user/user.module,v
retrieving revision 1.892.2.4
diff -u -F^f -u -F^f -r1.892.2.4 user.module
--- modules/user/user.module	19 May 2008 07:27:36 -0000	1.892.2.4
+++ modules/user/user.module	16 Sep 2008 19:06:59 -0000
@@ -497,13 +497,18 @@ function user_access($string, $account =
   // To reduce the number of SQL queries, we cache the user's permissions
   // in a static variable.
   if (!isset($perm[$account->uid])) {
-    $result = db_query("SELECT p.perm FROM {role} r INNER JOIN {permission} p ON p.rid = r.rid WHERE r.rid IN (". db_placeholders($account->roles) .")", array_keys($account->roles));
+    if (!empty($account->roles)) {
+      $result = db_query("SELECT p.perm FROM {role} r INNER JOIN {permission} p ON p.rid = r.rid WHERE r.rid IN (". db_placeholders($account->roles) .")", array_keys($account->roles));
 
-    $perms = array();
-    while ($row = db_fetch_object($result)) {
-      $perms += array_flip(explode(', ', $row->perm));
+      $perms = array();
+      while ($row = db_fetch_object($result)) {
+        $perms += array_flip(explode(', ', $row->perm));
+      }
+      $perm[$account->uid] = $perms;
+    }
+    else {
+      $perm[$account->uid] = array();
     }
-    $perm[$account->uid] = $perms;
   }
 
   return isset($perm[$account->uid][$string]);
