=== modified file 'modules/node.module'
--- modules/node.module	
+++ modules/node.module	
@@ -346,8 +346,8 @@ function node_load($param = array(), $re
   }
 
   $arguments = array();
+  $cachable = $revision == NULL;
   if (is_numeric($param)) {
-    $cachable = $revision == NULL;
     if ($cachable && isset($nodes[$param])) {
       return $nodes[$param];
     }
@@ -373,6 +373,9 @@ function node_load($param = array(), $re
   }
 
   if ($node->nid) {
+    if (isset($nodes[$node->nid])) {
+      return $node;
+    }
     // Call the node specific callback (if any) and piggy-back the
     // results to the node or overwrite some values.
     if ($extra = node_invoke($node, 'load')) {
@@ -389,7 +392,7 @@ function node_load($param = array(), $re
   }
 
   if ($cachable) {
-    $nodes[$param] = $node;
+    $nodes[$node->nid] = $node;
   }
 
   return $node;
