Index: modules/comment/comment.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/comment/comment.module,v
retrieving revision 1.927
diff -u -p -r1.927 comment.module
--- modules/comment/comment.module	9 Dec 2010 01:57:56 -0000	1.927
+++ modules/comment/comment.module	13 Dec 2010 17:50:00 -0000
@@ -1688,7 +1688,7 @@ class CommentController extends DrupalDe
     // Setup standard comment properties.
     foreach ($comments as $key => $comment) {
       $comment->name = $comment->uid ? $comment->registered_name : $comment->name;
-      $comment->new = node_mark($comment->nid, $comment->changed);
+      $comment->new = comment_mark($comment->nid, $comment->changed, $comment->created);
       $comment->node_type = 'comment_node_' . $comment->node_type;
       $comments[$key] = $comment;
     }
@@ -1697,6 +1697,37 @@ class CommentController extends DrupalDe
 }
 
 /**
+ * Decide on the type of marker to be displayed for a comment of a given node.
+ *
+ * @param $nid
+ *   Comment's node ID whose history supplies the "last viewed" timestamp.
+ * @param $changed
+ *   Time when the comment was last updated, which is compared against node's "last viewed" timestamp.
+ * @param $created
+ *   Time when the comment was created, which is compared against node's "last viewed" timestamp.
+ * @return
+ *   One of the MARK constants.
+ */
+function comment_mark($nid, $changed, $created) {
+  global $user;
+  $cache = &drupal_static(__FUNCTION__, array());
+
+  if (!$user->uid) {
+    return MARK_READ;
+  }
+  if (!isset($cache[$nid])) {
+    $cache[$nid] = node_last_viewed($nid);
+  }
+  if ($cache[$nid] != 0 && $created > $cache[$nid] && $created > NODE_NEW_LIMIT) {
+    return MARK_NEW;
+  }
+  elseif ($cache[$nid] != 0 && $changed > $cache[$nid] && $changed > NODE_NEW_LIMIT) {
+    return MARK_UPDATED;
+  }
+  return MARK_READ;
+}
+
+/**
  * Get number of new comments for current user and specified node.
  *
  * @param $nid
@@ -2256,7 +2287,7 @@ function template_preprocess_comment(&$v
   $variables['created']   = format_date($comment->created);
   $variables['changed']   = format_date($comment->changed);
 
-  $variables['new']       = !empty($comment->new) ? t('new') : '';
+  $variables['new']       = !empty($comment->new) ? theme('mark', array('type' => $comment->new)) : '';
   $variables['picture']   = theme_get_setting('toggle_comment_user_picture') ? theme('user_picture', array('account' => $comment)) : '';
   $variables['signature'] = $comment->signature;
 
Index: modules/node/node.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/node/node.module,v
retrieving revision 1.1330
diff -u -p -r1.1330 node.module
--- modules/node/node.module	2 Dec 2010 23:58:21 -0000	1.1330
+++ modules/node/node.module	13 Dec 2010 17:50:01 -0000
@@ -1402,11 +1402,13 @@ function node_show($node, $message = FAL
     drupal_set_title(t('Revision of %title from %date', array('%title' => $node->title, '%date' => format_date($node->revision_timestamp))), PASS_THROUGH);
   }
 
+  // For markup consistency with other pages, use node_view_multiple() rather than node_view().
+  $nodes = node_view_multiple(array($node->nid => $node), 'full');
+
   // Update the history table, stating that this user viewed this node.
   node_tag_new($node);
 
-  // For markup consistency with other pages, use node_view_multiple() rather than node_view().
-  return node_view_multiple(array($node->nid => $node), 'full');
+  return $nodes;
 }
 
 /**
