Mercurial > vim
changeset 18315:6e8b7c58c526 v8.1.2152
patch 8.1.2152: problems navigating tags file on MacOS Catalina
Commit: https://github.com/vim/vim/commit/27fc8cab227e30f649f52e74efd58ad56d21e9bb
Author: Bram Moolenaar <Bram@vim.org>
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)
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Tue, 15 Oct 2019 22:30:04 +0200 |
parents | 27e0efc17757 |
children | 6c8a3a02b533 |
files | src/tag.c src/version.c |
diffstat | 2 files changed, 14 insertions(+), 12 deletions(-) [+] |
line wrap: on
line diff
--- 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;