Index: node.module =================================================================== --- node.module (revision 10291) +++ node.module (working copy) @@ -684,35 +684,40 @@ * An HTML representation of the themed node. */ function node_view($node, $teaser = FALSE, $page = FALSE, $links = TRUE) { - $node = (object)$node; + if (is_object($node)) { + $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); } /**