diff --git a/src/channel.c b/src/channel.c
index c86304b..d5d7ffb 100644
--- a/src/channel.c
+++ b/src/channel.c
@@ -1262,6 +1262,8 @@
 {
     readq_T *node;
     readq_T *head = &channel->ch_head;
+    char_u  *p;
+    int	    i;
 
     node = (readq_T *)alloc(sizeof(readq_T));
     if (node == NULL)
@@ -1272,8 +1274,13 @@
 	vim_free(node);
 	return FAIL;	    /* out of memory */
     }
-    mch_memmove(node->rq_buffer, buf, (size_t)len);
-    node->rq_buffer[len] = NUL;
+
+    /* TODO: don't strip CR when channel is in raw mode */
+    p = node->rq_buffer;
+    for (i = 0; i < len; ++i)
+	if (buf[i] != CAR || i + 1 >= len || buf[i + 1] != NL)
+	    *p++ = buf[i];
+    *p = NUL;
 
     /* append node to the tail of the queue */
     node->rq_next = NULL;
diff --git a/src/eval.c b/src/eval.c
index 53d41d1..a90dd0b 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -9184,6 +9184,38 @@
 }
 
 /*
+ * Append "str" to "gap", escaping unprintable characters.
+ * Changes NL to \n, CR to \r, etc.
+ */
+    static void
+ga_concat_esc(garray_T *gap, char_u *str)
+{
+    char_u  *p;
+    char_u  buf[NUMBUFLEN];
+
+    for (p = str; *p != NUL; ++p)
+	switch (*p)
+	{
+	    case BS: ga_concat(gap, (char_u *)"\\b"); break;
+	    case ESC: ga_concat(gap, (char_u *)"\\e"); break;
+	    case FF: ga_concat(gap, (char_u *)"\\f"); break;
+	    case NL: ga_concat(gap, (char_u *)"\\n"); break;
+	    case TAB: ga_concat(gap, (char_u *)"\\t"); break;
+	    case CAR: ga_concat(gap, (char_u *)"\\r"); break;
+	    case '\\': ga_concat(gap, (char_u *)"\\\\"); break;
+	    default:
+		if (*p < ' ')
+		{
+		    vim_snprintf((char *)buf, NUMBUFLEN, "\\x%02x", *p);
+		    ga_concat(gap, buf);
+		}
+		else
+		    ga_append(gap, *p);
+		break;
+	}
+}
+
+/*
  * Fill "gap" with information about an assert error.
  */
     static void
@@ -9207,13 +9239,13 @@
 	ga_concat(gap, (char_u *)"Expected ");
 	if (exp_str == NULL)
 	{
-	    ga_concat(gap, tv2string(exp_tv, &tofree, numbuf, 0));
+	    ga_concat_esc(gap, tv2string(exp_tv, &tofree, numbuf, 0));
 	    vim_free(tofree);
 	}
 	else
-	    ga_concat(gap, exp_str);
+	    ga_concat_esc(gap, exp_str);
 	ga_concat(gap, (char_u *)" but got ");
-	ga_concat(gap, tv2string(got_tv, &tofree, numbuf, 0));
+	ga_concat_esc(gap, tv2string(got_tv, &tofree, numbuf, 0));
 	vim_free(tofree);
     }
 }
diff --git a/src/version.c b/src/version.c
index f2887c9..8520ec5 100644
--- a/src/version.c
+++ b/src/version.c
@@ -748,6 +748,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1325,
+/**/
     1324,
 /**/
     1323,
