updated for version 7.0062
diff --git a/src/mbyte.c b/src/mbyte.c
index 89b53c2..695b651 100644
--- a/src/mbyte.c
+++ b/src/mbyte.c
@@ -990,6 +990,10 @@
     {
 	buf[0] = (unsigned)c >> 8;
 	buf[1] = c;
+	/* Never use a NUL byte, it causes lots of trouble.  It's an invalid
+	 * character anyway. */
+	if (buf[1] == NUL)
+	    buf[1] = '\n';
 	return 2;
     }
     buf[0] = c;
@@ -3087,7 +3091,14 @@
 	    *to++ = '?';
 	    if ((*mb_ptr2cells)((char_u *)from) > 1)
 		*to++ = '?';
-	    l = (*mb_ptr2len_check)((char_u *)from);
+	    if (enc_utf8)
+		l = utfc_ptr2len_check_len((char_u *)from, fromlen);
+	    else
+	    {
+		l = (*mb_ptr2len_check)((char_u *)from);
+		if (l > fromlen)
+		    l = fromlen;
+	    }
 	    from += l;
 	    fromlen -= l;
 	}