# HG changeset patch # User Bram Moolenaar # Date 1571171404 -7200 # Node ID 6e8b7c58c5262133c228d7288b0d484a8df0133a # Parent 27e0efc1775704fd8d0ae43792de145aa004b3f6 patch 8.1.2152: problems navigating tags file on MacOS Catalina Commit: https://github.com/vim/vim/commit/27fc8cab227e30f649f52e74efd58ad56d21e9bb Author: Bram Moolenaar Date: Tue Oct 15 22:23:37 2019 +0200 patch 8.1.2152: problems navigating tags file on MacOS Catalina Problem: Problems navigating tags file on MacOS Catalina. Solution: Use fseek instead of lseek. (John Lamb, fixes https://github.com/vim/vim/issues/5061) diff --git a/src/tag.c b/src/tag.c --- a/src/tag.c +++ b/src/tag.c @@ -2198,23 +2198,23 @@ line_read_in: #endif #ifdef FEAT_TAG_BINS - /* - * When starting a binary search, get the size of the file and - * compute the first offset. - */ + // When starting a binary search, get the size of the file and + // compute the first offset. if (state == TS_BINARY) { - /* Get the tag file size (don't use mch_fstat(), it's not - * portable). */ - if ((filesize = vim_lseek(fileno(fp), - (off_T)0L, SEEK_END)) <= 0) + if (vim_fseek(fp, 0L, SEEK_END) != 0) + // can't seek, don't use binary search state = TS_LINEAR; else { - vim_lseek(fileno(fp), (off_T)0L, SEEK_SET); - - /* Calculate the first read offset in the file. Start - * the search in the middle of the file. */ + // Get the tag file size (don't use mch_fstat(), it's + // not portable). Don't use lseek(), it doesn't work + // properly on MacOS Catalina. + filesize = vim_ftell(fp); + vim_fseek(fp, 0L, SEEK_SET); + + // Calculate the first read offset in the file. Start + // the search in the middle of the file. search_info.low_offset = 0; search_info.low_char = 0; search_info.high_offset = filesize; diff --git a/src/version.c b/src/version.c --- a/src/version.c +++ b/src/version.c @@ -754,6 +754,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 2152, +/**/ 2151, /**/ 2150,