1
0
forked from aniani/vim

updated for version 7.3.273

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)
This commit is contained in:
Bram Moolenaar 2011-08-10 13:21:46 +02:00
parent 213b10a57e
commit 836082d398
5 changed files with 32 additions and 1 deletions

View 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

View 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));

View 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

View 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

View File

@ -709,6 +709,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
273,
/**/
272,
/**/