Index: modules/comment/comment.pages.inc
===================================================================
RCS file: /cvs/drupal/drupal/modules/comment/comment.pages.inc,v
retrieving revision 1.36
diff -u -r1.36 comment.pages.inc
--- modules/comment/comment.pages.inc	22 Feb 2010 15:38:52 -0000	1.36
+++ modules/comment/comment.pages.inc	10 Mar 2010 22:31:07 -0000
@@ -109,9 +109,14 @@
 function comment_approve($cid) {
   if ($comment = comment_load($cid)) {
     $comment->status = COMMENT_PUBLISHED;
-    comment_save($comment);
+    if (comment_save($comment)) {
+      drupal_set_message(t('Comment approved.'));
+    }
+    else {
+      watchdog('content', 'There was an error approving comment %subject.', array('%subject' => $comment->subject), WATCHDOG_ERROR);
+      drupal_set_message(t('There was an error approving the comment.'));
+    }
 
-    drupal_set_message(t('Comment approved.'));
     drupal_goto('node/' . $comment->nid);
   }
   return MENU_NOT_FOUND;
Index: modules/comment/comment.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/comment/comment.module,v
retrieving revision 1.852
diff -u -r1.852 comment.module
--- modules/comment/comment.module	7 Mar 2010 23:14:20 -0000	1.852
+++ modules/comment/comment.module	10 Mar 2010 22:31:07 -0000
@@ -1349,6 +1349,8 @@
  *
  * @param $comment
  *   A comment object.
+ * @return
+ *   TRUE on success, FALSE on failure.
  */
 function comment_save($comment) {
   global $user;
@@ -1494,8 +1496,11 @@
   }
   catch (Exception $e) {
     $transaction->rollback('comment', $e->getMessage(), array(), WATCHDOG_ERROR);
+
+    return FALSE;
   }
 
+  return TRUE;
 }
 
 /**
@@ -2086,25 +2091,32 @@
       user_cookie_save($form_state['values']);
     }
 
-    comment_save($comment);
-    $form_state['values']['cid'] = $comment->cid;
-    // Explain the approval queue if necessary.
-    if ($comment->status == COMMENT_NOT_PUBLISHED) {
-      if (!user_access('administer comments')) {
-        drupal_set_message(t('Your comment has been queued for review by site administrators and will be published after approval.'));
+    if (comment_save($comment)) {
+      $form_state['values']['cid'] = $comment->cid;
+      // Explain the approval queue if necessary.
+      if ($comment->status == COMMENT_NOT_PUBLISHED) {
+        if (!user_access('administer comments')) {
+          drupal_set_message(t('Your comment has been queued for review by site administrators and will be published after approval.'));
+        }
+      }
+      else {
+        drupal_set_message(t('Your comment has been posted.'));
       }
+      $query = array();
+      // Find the current display page for this comment.
+      $page = comment_get_display_page($comment->cid, $node->type);
+      if ($page > 0) {
+        $query['page'] = $page;
+      }
+      // Redirect to the newly posted comment.
+      $redirect = array('node/' . $node->nid, array('query' => $query, 'fragment' => 'comment-' . $comment->cid));
     }
     else {
-      drupal_set_message(t('Your comment has been posted.'));
-    }
-    $query = array();
-    // Find the current display page for this comment.
-    $page = comment_get_display_page($comment->cid, $node->type);
-    if ($page > 0) {
-      $query['page'] = $page;
+      watchdog('content', 'The comment could not be saved %subject.', array('%subject' => $comment->subject), WATCHDOG_ERROR);
+      drupal_set_message(t('The comment could not be saved %subject.', array('%subject' => $comment->subject)), 'error');
+      // Redirect the user to the node they are commenting on.
+      $redirect = 'node/' . $node->nid;
     }
-    // Redirect to the newly posted comment.
-    $redirect = array('node/' . $node->nid, array('query' => $query, 'fragment' => 'comment-' . $comment->cid));
   }
   else {
     watchdog('content', 'Comment: unauthorized comment submitted or comment submitted to a closed post %subject.', array('%subject' => $comment->subject), WATCHDOG_WARNING);
@@ -2477,8 +2489,12 @@
  * @ingroup actions
  */
 function comment_save_action($comment) {
-  comment_save($comment);
-  watchdog('action', 'Saved comment %title', array('%title' => $comment->subject));
+  if (comment_save($comment)) {
+    watchdog('action', 'Saved comment %title', array('%title' => $comment->subject));
+  }
+  else {
+    watchdog('action', 'Comment %title could not be saved', array('%title' => $comment->subject), WATCHDOG_ERROR);
+  }
 }
 
 /**
