Mercurial > vim
changeset 26159:34606aec52b3 v8.2.3611
patch 8.2.3611: crash when using CTRL-W f without finding a file name
Commit: https://github.com/vim/vim/commit/615ddd5342b50a6878a907062aa471740bd9a847
Author: Bram Moolenaar <Bram@vim.org>
Date: Wed Nov 17 18:00:31 2021 +0000
patch 8.2.3611: crash when using CTRL-W f without finding a file name
Problem: Crash when using CTRL-W f without finding a file name.
Solution: Bail out when the file name length is zero.
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Wed, 17 Nov 2021 19:15:03 +0100 |
parents | 9b1f90bc52dc |
children | b242c826c5cf |
files | src/findfile.c src/normal.c src/testdir/test_visual.vim src/version.c |
diffstat | 4 files changed, 22 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/src/findfile.c +++ b/src/findfile.c @@ -1735,6 +1735,9 @@ find_file_in_path_option( proc->pr_WindowPtr = (APTR)-1L; # endif + if (len == 0) + return NULL; + if (first == TRUE) { // copy file name into NameBuff, expanding environment variables @@ -2118,7 +2121,12 @@ find_file_name_in_path( int c; # if defined(FEAT_FIND_ID) && defined(FEAT_EVAL) char_u *tofree = NULL; +# endif + if (len == 0) + return NULL; + +# if defined(FEAT_FIND_ID) && defined(FEAT_EVAL) if ((options & FNAME_INCL) && *curbuf->b_p_inex != NUL) { tofree = eval_includeexpr(ptr, len);
--- a/src/normal.c +++ b/src/normal.c @@ -3881,8 +3881,10 @@ get_visual_text( *pp = ml_get_pos(&VIsual); *lenp = curwin->w_cursor.col - VIsual.col + 1; } - if (has_mbyte) - // Correct the length to include the whole last character. + if (**pp == NUL) + *lenp = 0; + if (has_mbyte && *lenp > 0) + // Correct the length to include all bytes of the last character. *lenp += (*mb_ptr2len)(*pp + (*lenp - 1)) - 1; } reset_VIsual_and_resel();
--- a/src/testdir/test_visual.vim +++ b/src/testdir/test_visual.vim @@ -1265,6 +1265,14 @@ func Test_visual_block_with_virtualedit( call delete('XTest_block') endfunc +func Test_visual_block_ctrl_w_f() + " Emtpy block selected in new buffer should not result in an error. + au! BufNew foo sil norm f + edit foo + + au! BufNew +endfunc + func Test_visual_reselect_with_count() " this was causing an illegal memory access let lines =<< trim END