Index: node.module
===================================================================
--- node.module	(revision 13535)
+++ node.module	(working copy)
@@ -2050,7 +2050,7 @@
 
   // If the module did not override the access rights, use those set in the
   // node_access table.
-  if ($op != 'create' && $node->nid && $node->status) {
+  if ($op != 'create' && $node->nid) {
     $grants = array();
     foreach (node_access_grants($op, $account) as $realm => $gids) {
       foreach ($gids as $gid) {
@@ -2063,9 +2063,16 @@
       $grants_sql = 'AND ('. implode(' OR ', $grants) .')';
     }
 
-    $sql = "SELECT 1 FROM {node_access} WHERE (nid = 0 OR nid = %d) $grants_sql AND grant_$op >= 1";
+    $sql = "SELECT * FROM {node_access} WHERE (nid = 0 OR nid = %d) $grants_sql AND grant_$op >= 1";
     $result = db_query_range($sql, $node->nid, 0, 1);
-    return (bool) db_result($result);
+    $row = db_fetch_object($result);
+    $grant_status = $row ? TRUE : FALSE;
+    if ($row && $row->realm == 'all') {
+      return (bool) $node->status;
+    }
+    else {
+      return $grant_status;
+    }
   }
 
   // Let authors view their own nodes.
