diff --git a/core/modules/comment/comment.admin.inc b/core/modules/comment/comment.admin.inc
index 6210cc5..bc28e54 100644
--- a/core/modules/comment/comment.admin.inc
+++ b/core/modules/comment/comment.admin.inc
@@ -110,13 +110,14 @@ function comment_admin_overview($form, &$form_state, $arg) {
     // Remove the first node title from the node_titles array and attach to
     // the comment.
     $comment->node_title = array_shift($node_titles);
+    $title_attribute = !empty($comment->comment_body[LANGUAGE_NOT_SPECIFIED][0]['value']) ? truncate_utf8($comment->comment_body[LANGUAGE_NOT_SPECIFIED][0]['value'], 128) : $comment->subject;
     $options[$comment->cid] = array(
       'subject' => array(
         'data' => array(
           '#type' => 'link',
           '#title' => $comment->subject,
           '#href' => 'comment/' . $comment->cid,
-          '#options' => array('attributes' => array('title' => truncate_utf8($comment->comment_body[LANGUAGE_NOT_SPECIFIED][0]['value'], 128)), 'fragment' => 'comment-' . $comment->cid),
+          '#options' => array('attributes' => array('title' => $title_attribute), 'fragment' => 'comment-' . $comment->cid),
         ),
       ),
       'author' => theme('username', array('account' => $comment)),
diff --git a/core/modules/comment/comment.module b/core/modules/comment/comment.module
index da5e25b..39560c3 100644
--- a/core/modules/comment/comment.module
+++ b/core/modules/comment/comment.module
@@ -1690,7 +1690,7 @@ function comment_preview(Comment $comment) {
   $node = node_load($comment->nid);
 
   if (!form_get_errors()) {
-    $comment->format = $comment->comment_body[LANGUAGE_NOT_SPECIFIED][0]['format'];
+    $comment->format = isset($comment->comment_body[LANGUAGE_NOT_SPECIFIED][0]['format']) ? $comment->comment_body[LANGUAGE_NOT_SPECIFIED][0]['format'] : NULL;
     // Attach the user and time information.
     if (!empty($comment->name)) {
       $account = user_load_by_name($comment->name);
diff --git a/core/modules/comment/lib/Drupal/comment/CommentFormController.php b/core/modules/comment/lib/Drupal/comment/CommentFormController.php
index 9b3094e..64306e1 100644
--- a/core/modules/comment/lib/Drupal/comment/CommentFormController.php
+++ b/core/modules/comment/lib/Drupal/comment/CommentFormController.php
@@ -294,17 +294,19 @@ class CommentFormController extends EntityFormController {
       // 1) Filter it into HTML
       // 2) Strip out all HTML tags
       // 3) Convert entities back to plain-text.
-      $comment_body = $comment->comment_body[LANGUAGE_NOT_SPECIFIED][0];
-      if (isset($comment_body['format'])) {
-        $comment_text = check_markup($comment_body['value'], $comment_body['format']);
-      }
-      else {
-        $comment_text = check_plain($comment_body['value']);
+      if (isset($comment->comment_body[LANGUAGE_NOT_SPECIFIED][0])) {
+        $comment_body = $comment->comment_body[LANGUAGE_NOT_SPECIFIED][0];
+        if (isset($comment_body['format'])) {
+          $comment_text = check_markup($comment_body['value'], $comment_body['format']);
+        }
+        else {
+          $comment_text = check_plain($comment_body['value']);
+        }
+        $comment->subject = truncate_utf8(trim(decode_entities(strip_tags($comment_text))), 29, TRUE);
       }
-      $comment->subject = truncate_utf8(trim(decode_entities(strip_tags($comment_text))), 29, TRUE);
       // Edge cases where the comment body is populated only by HTML tags will
       // require a default subject.
-      if ($comment->subject == '') {
+      if (trim($comment->subject == '')) {
         $comment->subject = t('(No subject)');
       }
     }
diff --git a/core/modules/comment/lib/Drupal/comment/Tests/CommentFieldsTest.php b/core/modules/comment/lib/Drupal/comment/Tests/CommentFieldsTest.php
index 44c79b2..709d3a3 100644
--- a/core/modules/comment/lib/Drupal/comment/Tests/CommentFieldsTest.php
+++ b/core/modules/comment/lib/Drupal/comment/Tests/CommentFieldsTest.php
@@ -109,4 +109,23 @@ class CommentFieldsTest extends CommentTestBase {
     $edit = array('comment_body[und][0][value]' => $this->randomName(8));
     $this->drupalPost('node/' . $this->node->nid, $edit, t('Save'));
   }
+
+  /**
+   * Test that certain comment functionalities work without the comment_body
+   * field, and without generating warnings.
+   */
+  function testDeletedCommentBody() {
+    // Delete the comment_body field.
+    $this->drupalLogin($this->admin_user);
+    $this->drupalPost('admin/structure/types/manage/article/comment/fields/comment_body/delete', array(), t('Delete'));
+
+    // Preview an empty comment.
+    $this->drupalPost('node/' . $this->node->nid, array(), t('Preview'));
+
+    // Post an empty comment.
+    $this->drupalPost('node/' . $this->node->nid, array(), t('Save'));
+
+    // View the comment administration overview page.
+    $this->drupalGet('admin/content/comment');
+  }
 }
