1
0
forked from aniani/vim

patch 8.1.1094: long line in tags file causes error

Problem:    Long line in tags file causes error.
Solution:   Check for overlong line earlier. (Andy Massimino, closes #4051,
            closes #4084)
This commit is contained in:
Bram Moolenaar
2019-03-30 21:41:48 +01:00
parent 96428dd4e9
commit 5209334c55
3 changed files with 59 additions and 22 deletions

View File

@@ -1921,6 +1921,32 @@ line_read_in:
}
parse_line:
if (vim_strchr(lbuf, NL) == NULL
#ifdef FEAT_CSCOPE
&& !use_cscope
#endif
)
{
// Truncated line, ignore it. Has been reported for
// Mozilla JS with extremely long names.
if (p_verbose >= 5)
{
verbose_enter();
msg(_("Ignoring long line in tags file"));
verbose_leave();
}
#ifdef FEAT_TAG_BINS
if (state != TS_LINEAR)
{
// Avoid getting stuck.
linear = TRUE;
state = TS_LINEAR;
vim_fseek(fp, search_info.low_offset, SEEK_SET);
}
#endif
continue;
}
/*
* Figure out where the different strings are in this line.
* For "normal" tags: Do a quick check if the tag matches.
@@ -1937,28 +1963,6 @@ parse_line:
tagp.tagname_end = vim_strchr(lbuf, TAB);
if (tagp.tagname_end == NULL)
{
if (vim_strchr(lbuf, NL) == NULL)
{
/* Truncated line, ignore it. Has been reported for
* Mozilla JS with extremely long names. */
if (p_verbose >= 5)
{
verbose_enter();
msg(_("Ignoring long line in tags file"));
verbose_leave();
}
#ifdef FEAT_TAG_BINS
if (state != TS_LINEAR)
{
/* Avoid getting stuck. */
linear = TRUE;
state = TS_LINEAR;
vim_fseek(fp, search_info.low_offset, SEEK_SET);
}
#endif
continue;
}
/* Corrupted tag line. */
line_error = TRUE;
break;