diff --git a/include/class.thread.php b/include/class.thread.php
index b98b33535071b7858af9941510f3f40ae10257c0..f1eb94064f0697a841d969eb6770045eb6116184 100644
--- a/include/class.thread.php
+++ b/include/class.thread.php
@@ -314,9 +314,16 @@ Class ThreadEntry {
     function setBody($body) {
         global $cfg;
 
+        if (!$body instanceof ThreadBody) {
+            if ($cfg->isHtmlThreadEnabled())
+                $body = new HtmlThreadBody($body);
+            else
+                $body = new TextThreadBody($body);
+        }
+
         $sql='UPDATE '.TICKET_THREAD_TABLE.' SET updated=NOW()'
-            .',body='.db_input(Format::sanitize($body,
-                !$cfg->isHtmlThreadEnabled()))
+            .',format='.db_input($body->getType())
+            .',body='.db_input((string) $body)
             .' WHERE id='.db_input($this->getId());
         return db_query($sql) && db_affected_rows();
     }