]> granicus.if.org Git - vim/commitdiff
updated for version 7.2a-010 v7.2a.010
authorBram Moolenaar <Bram@vim.org>
Sun, 29 Jun 2008 14:16:06 +0000 (14:16 +0000)
committerBram Moolenaar <Bram@vim.org>
Sun, 29 Jun 2008 14:16:06 +0000 (14:16 +0000)
src/mbyte.c
src/message.c
src/version.c

index 4e9059366535035c55ef2e1739fe0386c22e9666..d6edf201e79204c47b9f17166937fb2e3417919e 100644 (file)
@@ -1387,7 +1387,7 @@ utf_ptr2char(p)
        return p[0];
 
     len = utf8len_tab[p[0]];
-    if ((p[1] & 0xc0) == 0x80)
+    if (len > 1 && (p[1] & 0xc0) == 0x80)
     {
        if (len == 2)
            return ((p[0] & 0x1f) << 6) + (p[1] & 0x3f);
@@ -1753,14 +1753,27 @@ utfc_ptr2len_len(p, size)
 #endif
     while (len < size)
     {
-       if (p[len] < 0x80 || !UTF_COMPOSINGLIKE(p + prevlen, p + len))
+       int     len_next_char;
+
+       if (p[len] < 0x80)
+           break;
+
+       /*
+        * Next character length should not go beyond size to ensure that
+        * UTF_COMPOSINGLIKE(...) does not read beyond size.
+        */
+       len_next_char = utf_ptr2len_len(p + len, size - len);
+       if (len_next_char > size - len)
+           break;
+
+       if (!UTF_COMPOSINGLIKE(p + prevlen, p + len))
            break;
 
        /* Skip over composing char */
 #ifdef FEAT_ARABIC
        prevlen = len;
 #endif
-       len += utf_ptr2len_len(p + len, size - len);
+       len += len_next_char;
     }
     return len;
 }
index 66936cda3c84ec52a7e7de0a34320c98f3208ed9..cb749da7f55262edaa5244fba2187cb35029e46a 100644 (file)
@@ -1391,7 +1391,7 @@ msg_outtrans_len_attr(msgstr, len, attr)
                plain_start = str + 1;
                msg_puts_attr(s, attr == 0 ? hl_attr(HLF_8) : attr);
            }
-           retval += ptr2cells(str);
+           retval += char2cells(*str);
            ++str;
        }
     }
index d51c8777b10067ea4b0699383ea311042f566a94..d44cd658efaf5b2816e215c1953faf9329cba2d5 100644 (file)
@@ -676,6 +676,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    10,
 /**/
     9,
 /**/