diff src/misc1.c @ 1617:5f0c7aae4da2 v7.1.330

updated for version 7.1-330
author vimboss
date Sat, 21 Jun 2008 14:30:28 +0000
parents d976f4da2a4d
children 18ee39301b82
line wrap: on
line diff
--- a/src/misc1.c
+++ b/src/misc1.c
@@ -1880,15 +1880,20 @@ ins_bytes_len(p, len)
 # ifdef FEAT_MBYTE
     int		n;
 
-    for (i = 0; i < len; i += n)
-    {
-	n = (*mb_ptr2len)(p + i);
-	ins_char_bytes(p + i, n);
-    }
-# else
-    for (i = 0; i < len; ++i)
-	ins_char(p[i]);
+    if (has_mbyte)
+	for (i = 0; i < len; i += n)
+	{
+	    if (enc_utf8)
+		/* avoid reading past p[len] */
+		n = utfc_ptr2len_len(p + i, len - i);
+	    else
+		n = (*mb_ptr2len)(p + i);
+	    ins_char_bytes(p + i, n);
+	}
+    else
 # endif
+	for (i = 0; i < len; ++i)
+	    ins_char(p[i]);
 }
 #endif