--- modules/node/node.module	2011-02-17 12:30:55.000000000 -0600
+++ modules/node/node.patched.module	2011-02-17 12:31:35.000000000 -0600
@@ -1817,12 +1817,12 @@ function theme_node_search_admin($variab
 
 function _node_revision_access($node, $op = 'view') {
   $access = &drupal_static(__FUNCTION__, array());
-  if (!isset($access[$node->vid])) {
+  if (!isset($access[$node->vid]) || !isset($access[$node->vid][$op])) {
     // To save additional calls to the database, return early if the user
     // doesn't have the required permissions.
     $map = array('view' => 'view revisions', 'update' => 'revert revisions', 'delete' => 'delete revisions');
     if (isset($map[$op]) && (!user_access($map[$op]) && !user_access('administer nodes'))) {
-      $access[$node->vid] = FALSE;
+      $access[$node->vid][$op] = FALSE;
       return FALSE;
     }
 
@@ -1835,18 +1835,18 @@ function _node_revision_access($node, $o
     // Also, if you try to revert to or delete the current revision, that's
     // not good.
     if ($is_current_revision && (db_query('SELECT COUNT(vid) FROM {node_revision} WHERE nid = :nid', array(':nid' => $node->nid))->fetchField() == 1 || $op == 'update' || $op == 'delete')) {
-      $access[$node->vid] = FALSE;
+      $access[$node->vid][$op] = FALSE;
     }
     elseif (user_access('administer nodes')) {
-      $access[$node->vid] = TRUE;
+      $access[$node->vid][$op] = TRUE;
     }
     else {
       // First check the access to the current revision and finally, if the
       // node passed in is not the current revision then access to that, too.
-      $access[$node->vid] = node_access($op, $node_current_revision) && ($is_current_revision || node_access($op, $node));
+      $access[$node->vid][$op] = node_access($op, $node_current_revision) && ($is_current_revision || node_access($op, $node));
     }
   }
-  return $access[$node->vid];
+  return $access[$node->vid][$op];
 }
 
 function _node_add_access() {
