]> granicus.if.org Git - vim/commitdiff
updated for version 7.3.273 v7.3.273
authorBram Moolenaar <Bram@vim.org>
Wed, 10 Aug 2011 11:21:46 +0000 (13:21 +0200)
committerBram Moolenaar <Bram@vim.org>
Wed, 10 Aug 2011 11:21:46 +0000 (13:21 +0200)
Problem:    A BOM in an error file is seen as text. (Aleksey Baibarin)
Solution:   Remove the BOM from the text before evaluating. (idea by Christian
            Brabandt)

src/mbyte.c
src/proto/mbyte.pro
src/quickfix.c
src/testdir/test10.in
src/version.c

index 44d89f794772036a7904b11ebfa916a4abe30e2f..da97b346f46fb76263ace3a3a9c3231b72c726d1 100644 (file)
@@ -837,6 +837,27 @@ bomb_size()
     return n;
 }
 
+/*
+ * Remove all BOM from "s" by moving remaining text.
+ */
+    void
+remove_bom(s)
+    char_u *s;
+{
+    if (enc_utf8)
+    {
+       char_u *p = s;
+
+       while ((p = vim_strbyte(p, 0xef)) != NULL)
+       {
+           if (p[1] == 0xbb && p[2] == 0xbf)
+               STRMOVE(p, p + 3);
+           else
+               ++p;
+       }
+    }
+}
+
 /*
  * Get class of pointer:
  * 0 for blank or NUL
index 88496ccf06dc6e20010773f58b99f6a8e2091924..8c0788c7fa1d0458a3f316694d374498e01ac56f 100644 (file)
@@ -2,6 +2,7 @@
 int enc_canon_props __ARGS((char_u *name));
 char_u *mb_init __ARGS((void));
 int bomb_size __ARGS((void));
+void remove_bom __ARGS((char_u *s));
 int mb_get_class __ARGS((char_u *p));
 int dbcs_class __ARGS((unsigned lead, unsigned trail));
 int latin_char2len __ARGS((int c));
index 999c66ed9b095fd92f0291f5e4dc1e3bb09aa567..17d85837cb82f081b0ddcf7a608c16c14c76e4f1 100644 (file)
@@ -561,6 +561,10 @@ qf_init_ext(qi, efile, buf, tv, errorformat, newlist, lnumfirst, lnumlast,
            break;
 
        IObuff[CMDBUFFSIZE - 2] = NUL;  /* for very long lines */
+#ifdef FEAT_MBYTE
+       remove_bom(IObuff);
+#endif
+
        if ((efmp = vim_strrchr(IObuff, '\n')) != NULL)
            *efmp = NUL;
 #ifdef USE_CRNL
index 6d0c721ddd497a19a599afe08735f8a23d458942..0bd6455f1894b7dc21423609f5e74d27ff7d0a47 100644 (file)
@@ -2,6 +2,9 @@ Test for 'errorformat'.  This will fail if the quickfix feature was disabled.
 
 STARTTEST
 :so small.vim
+:" Also test a BOM is ignored.
+:so mbyte.vim
+:set encoding=utf-8
 :/start of errorfile/,/end of errorfile/w! Xerrorfile
 :/start of testfile/,/end of testfile/w! Xtestfile
 :cf Xerrorfile
@@ -20,7 +23,7 @@ ENDTEST
 
 start of errorfile
 "Xtestfile", line 4.12: 1506-045 (S) Undeclared identifier fd_set.
-"Xtestfile", line 7 col 19; this is an error
+"Xtestfile", line 7 col 19; this is an error
 gcc -c -DHAVE_CONFIsing-prototypes -I/usr/X11R6/include  version.c
 Xtestfile:13: parse error before `asd'
 make: *** [vim] Error 1
index 63c4c8f335c908e3d6e20960001c2b8696558bc2..60defc7e0931d3da4b29c0f403ee73621457a2d5 100644 (file)
@@ -709,6 +709,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    273,
 /**/
     272,
 /**/