James McCoy wrote: > On Jan 16, 2017 05:03, "Kazunobu Kuriyama" <[email protected]> > wrote: > > 2017-01-16 0:53 GMT+09:00 Bram Moolenaar <[email protected]>: > > > > > Patch 8.0.0190 > > Summary: finding duplicate tags uses a slow linear search > > Problem: Detecting duplicate tags uses a slow linear search. > > Solution: Use a much faster hash table solution. (James McCoy, closes > > #1046) > > But don't add hi_keylen, it makes hash tables 50% bigger. > > Files: src/tag.c > > > > > With this patch, CTRL-] in normal mode, or :tag, sometimes fails to work > for me. > > For example, go to vim/src/ and open vim there. Do ":make tags" and ":edit > gui.c". Place the cursor at gui_attempt_start() at line 110 and press > CTRL-]. > > Then I got either of them, depending on circumstances: > > (1) no response > (2) an error message: E429: File "tags^A^Agui_attempt_start^ > Igui.c^I/^gui_attempt_start(void)$/ead_ref" does not exist (N.B. The > substring after $/ often varies). > (3) segfault > > Those clearly indicate that memory corruption takes place somewhere > (Therefore, I believe the procedure above is not necessarily useful to > reproduce the issue for everyone). > > > This should be fixed by PR #1387.
Thanks for pinpointing the problem. However, having a NUL at the start means duplicate tags are not found. A better solution is to make sure the first byte is never NUL. But I also want to write a test that detects the problem. Looks like it requires a static item in the current file. -- Facepalm statement #4: "3000 year old graves? That's not possible, it's only 2014!" /// Bram Moolenaar -- [email protected] -- http://www.Moolenaar.net \\\ /// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ \\\ an exciting new programming language -- http://www.Zimbu.org /// \\\ help me help AIDS victims -- http://ICCF-Holland.org /// -- -- 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 --- You received this message because you are subscribed to the Google Groups "vim_dev" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/d/optout.
