diff --git a/modules/user/user.module b/modules/user/user.module index fa580be..ce97d0f 100644 --- a/modules/user/user.module +++ b/modules/user/user.module @@ -2741,8 +2741,9 @@ function user_mail_tokens(&$replacements, $data, $options) { function user_roles($membersonly = FALSE, $permission = NULL) { $user_roles = &drupal_static(__FUNCTION__); + // Roles for specific permissions are not cached. if (empty($permission)) { - $cid = (int) $membersonly; + $cid = $membersonly ? DRUPAL_AUTHENTICATED_RID : DRUPAL_ANONYMOUS_RID; if (isset($user_roles[$cid])) { return $user_roles[$cid]; } @@ -2776,7 +2777,9 @@ function user_roles($membersonly = FALSE, $permission = NULL) { } } - if (isset($cid)) { + // Do not cache roles for specific permissions. This data is not requested + // frequently enough to justify the additional memory use. + if (empty($permission)) { $user_roles[$cid] = $roles; return $user_roles[$cid]; }