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:
parent
213b10a57e
commit
836082d398
21
src/mbyte.c
21
src/mbyte.c
@ -837,6 +837,27 @@ bomb_size()
|
|||||||
return n;
|
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:
|
* Get class of pointer:
|
||||||
* 0 for blank or NUL
|
* 0 for blank or NUL
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
int enc_canon_props __ARGS((char_u *name));
|
int enc_canon_props __ARGS((char_u *name));
|
||||||
char_u *mb_init __ARGS((void));
|
char_u *mb_init __ARGS((void));
|
||||||
int bomb_size __ARGS((void));
|
int bomb_size __ARGS((void));
|
||||||
|
void remove_bom __ARGS((char_u *s));
|
||||||
int mb_get_class __ARGS((char_u *p));
|
int mb_get_class __ARGS((char_u *p));
|
||||||
int dbcs_class __ARGS((unsigned lead, unsigned trail));
|
int dbcs_class __ARGS((unsigned lead, unsigned trail));
|
||||||
int latin_char2len __ARGS((int c));
|
int latin_char2len __ARGS((int c));
|
||||||
|
@ -561,6 +561,10 @@ qf_init_ext(qi, efile, buf, tv, errorformat, newlist, lnumfirst, lnumlast,
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
IObuff[CMDBUFFSIZE - 2] = NUL; /* for very long lines */
|
IObuff[CMDBUFFSIZE - 2] = NUL; /* for very long lines */
|
||||||
|
#ifdef FEAT_MBYTE
|
||||||
|
remove_bom(IObuff);
|
||||||
|
#endif
|
||||||
|
|
||||||
if ((efmp = vim_strrchr(IObuff, '\n')) != NULL)
|
if ((efmp = vim_strrchr(IObuff, '\n')) != NULL)
|
||||||
*efmp = NUL;
|
*efmp = NUL;
|
||||||
#ifdef USE_CRNL
|
#ifdef USE_CRNL
|
||||||
|
@ -2,6 +2,9 @@ Test for 'errorformat'. This will fail if the quickfix feature was disabled.
|
|||||||
|
|
||||||
STARTTEST
|
STARTTEST
|
||||||
:so small.vim
|
: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 errorfile/,/end of errorfile/w! Xerrorfile
|
||||||
:/start of testfile/,/end of testfile/w! Xtestfile
|
:/start of testfile/,/end of testfile/w! Xtestfile
|
||||||
:cf Xerrorfile
|
:cf Xerrorfile
|
||||||
@ -20,7 +23,7 @@ ENDTEST
|
|||||||
|
|
||||||
start of errorfile
|
start of errorfile
|
||||||
"Xtestfile", line 4.12: 1506-045 (S) Undeclared identifier fd_set.
|
"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
|
gcc -c -DHAVE_CONFIsing-prototypes -I/usr/X11R6/include version.c
|
||||||
Xtestfile:13: parse error before `asd'
|
Xtestfile:13: parse error before `asd'
|
||||||
make: *** [vim] Error 1
|
make: *** [vim] Error 1
|
||||||
|
@ -709,6 +709,8 @@ static char *(features[]) =
|
|||||||
|
|
||||||
static int included_patches[] =
|
static int included_patches[] =
|
||||||
{ /* Add new patch number below this line */
|
{ /* Add new patch number below this line */
|
||||||
|
/**/
|
||||||
|
273,
|
||||||
/**/
|
/**/
|
||||||
272,
|
272,
|
||||||
/**/
|
/**/
|
||||||
|
Loading…
x
Reference in New Issue
Block a user