Index: drupal_5.8/modules/node/node.module
===================================================================
--- drupal_5.8/modules/node/node.module	(revision 14634)
+++ drupal_5.8/modules/node/node.module	(working copy)
@@ -724,35 +724,42 @@
  *   An HTML representation of the themed node.
  */
 function node_view($node, $teaser = FALSE, $page = FALSE, $links = TRUE) {
-  $node = (object)$node;
+  if (is_object($node)) {
+    // php5 passes $node as a reference. So clone the node object to not modify
+    // the original $node within this function and allow multiple calls of node_view().
+    $node_clone = drupal_clone($node);
+  }
+  else {
+    $node_clone = (object)$node;
+  }

-  $node = node_build_content($node, $teaser, $page);
+  $node_clone = node_build_content($node_clone, $teaser, $page);

   if ($links) {
-    $node->links = module_invoke_all('link', 'node', $node, $teaser);
+    $node_clone->links = module_invoke_all('link', 'node', $node_clone, $teaser);

     foreach (module_implements('link_alter') AS $module) {
       $function = $module .'_link_alter';
-      $function($node, $node->links);
+      $function($node_clone, $node_clone->links);
     }
   }

-  // Set the proper node part, then unset unused $node part so that a bad
+  // Set the proper node part, then unset unused $node_clone part so that a bad
   // theme can not open a security hole.
-  $content = drupal_render($node->content);
+  $content = drupal_render($node_clone->content);
   if ($teaser) {
-    $node->teaser = $content;
-    unset($node->body);
+    $node_clone->teaser = $content;
+    unset($node_clone->body);
   }
   else {
-    $node->body = $content;
-    unset($node->teaser);
+    $node_clone->body = $content;
+    unset($node_clone->teaser);
   }

   // Allow modules to modify the fully-built node.
-  node_invoke_nodeapi($node, 'alter', $teaser, $page);
+  node_invoke_nodeapi($node_clone, 'alter', $teaser, $page);

-  return theme('node', $node, $teaser, $page);
+  return theme('node', $node_clone, $teaser, $page);
 }

 /**
@@ -2323,7 +2330,7 @@
   if ($node->teaser && $node->teaser != $node->body) {
     drupal_set_message(t('The trimmed version of your post shows what your post looks like when promoted to the main page or when exported for syndication. You can insert the delimiter "&lt;!--break--&gt;" (without the quotes) to fine-tune where your post gets split.'));
     $output .= '<h3>'. t('Preview trimmed version') .'</h3>';
-    $output .= node_view(drupal_clone($node), 1, FALSE, 0);
+    $output .= node_view($node, 1, FALSE, 0);
     $output .= '<h3>'. t('Preview full version') .'</h3>';
     $output .= node_view($node, 0, FALSE, 0);
   }
