1
0
forked from aniani/vim

updated for version 7.3.373

Problem:    A tags file with an extremely long name may cause an infinite loop.
Solution:   When encountering a long name switch to linear search.
This commit is contained in:
Bram Moolenaar
2011-12-14 14:15:16 +01:00
parent 96a8964564
commit 08fc756582
2 changed files with 16 additions and 1 deletions

View File

@@ -1854,7 +1854,7 @@ line_read_in:
if (state == TS_BINARY && orgpat.regmatch.rm_ic && !sortic)
{
/* binary search won't work for ignoring case, use linear
/* Binary search won't work for ignoring case, use linear
* search. */
linear = TRUE;
state = TS_LINEAR;
@@ -1922,6 +1922,19 @@ line_read_in:
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;
# ifdef HAVE_FSEEKO
fseeko(fp, search_info.low_offset, SEEK_SET);
# else
fseek(fp, (long)search_info.low_offset, SEEK_SET);
# endif
}
#endif
continue;
}

View File

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