> Patch 7.3.366
> Problem: A tags file with an extremely long name causes errors.
> Solution: Ignore tags that are too long. (Arno Renevier)
> Files: src/tag.c
Thanks for applying my patch.
But unfortunately, I noticed, it is wrong:
With this patch, vims ends up in an infinite loop.
The behaviour seems correct when using:
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();
}
i = OK;
} else {
/* Corrupted tag line. */
line_error = TRUE;
break;
}
Actually, as of today, I still don't have a thorough understanding of the
find_tags function, and its huge loop.
So, I'm not totally confident this fix is the right one.
I attach a problematic tag file.
The problematic line is the long 26th line.
I can trigger the bug by opening vim in the same directory, and executing
:tselect test
May be, the binary search won't run through this line, so you may need to move
that line to some other places. Eventually, a tag file containing only the
headers and the offending line, triggers the bug.
Regards,
arno Renevier
--
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php