1
0
forked from aniani/vim

patch 8.2.1842: crash when USE_FNAME_CASE is defined and using :browse

Problem:    Crash when USE_FNAME_CASE is defined and using :browse.
Solution:   Don't use read-only memory for ".". (Yegappan Lakshmanan,
            closes #7123)
This commit is contained in:
Bram Moolenaar
2020-10-13 19:08:24 +02:00
parent 2b9b17ea5d
commit 21cbe175ee
4 changed files with 24 additions and 2 deletions

View File

@@ -2465,6 +2465,7 @@ do_ecmd(
bufref_T old_curbuf; bufref_T old_curbuf;
char_u *free_fname = NULL; char_u *free_fname = NULL;
#ifdef FEAT_BROWSE #ifdef FEAT_BROWSE
char_u dot_path[] = ".";
char_u *browse_file = NULL; char_u *browse_file = NULL;
#endif #endif
int retval = FAIL; int retval = FAIL;
@@ -2511,7 +2512,7 @@ do_ecmd(
// No browsing supported but we do have the file explorer: // No browsing supported but we do have the file explorer:
// Edit the directory. // Edit the directory.
if (ffname == NULL || !mch_isdir(ffname)) if (ffname == NULL || !mch_isdir(ffname))
ffname = (char_u *)"."; ffname = dot_path;
} }
else else
{ {

View File

@@ -6084,6 +6084,7 @@ ex_splitview(exarg_T *eap)
char_u *fname = NULL; char_u *fname = NULL;
#endif #endif
#ifdef FEAT_BROWSE #ifdef FEAT_BROWSE
char_u dot_path[] = ".";
int browse_flag = cmdmod.browse; int browse_flag = cmdmod.browse;
#endif #endif
int use_tab = eap->cmdidx == CMD_tabedit int use_tab = eap->cmdidx == CMD_tabedit
@@ -6136,7 +6137,7 @@ ex_splitview(exarg_T *eap)
// No browsing supported but we do have the file explorer: // No browsing supported but we do have the file explorer:
// Edit the directory. // Edit the directory.
if (*eap->arg == NUL || !mch_isdir(eap->arg)) if (*eap->arg == NUL || !mch_isdir(eap->arg))
eap->arg = (char_u *)"."; eap->arg = dot_path;
} }
else else
{ {

View File

@@ -1805,4 +1805,22 @@ func Test_edit_lastline_scroll()
close! close!
endfunc endfunc
func Test_edit_browse()
" in the GUI this opens a file picker, we only test the terminal behavior
CheckNotGui
" ":browse xxx" checks for the FileExplorer augroup and assumes editing "."
" works then.
augroup FileExplorer
au!
augroup END
" When the USE_FNAME_CASE is defined this used to cause a crash.
browse enew
bwipe!
browse split
bwipe!
endfunc
" vim: shiftwidth=2 sts=2 expandtab " vim: shiftwidth=2 sts=2 expandtab

View File

@@ -750,6 +750,8 @@ static char *(features[]) =
static int included_patches[] = static int included_patches[] =
{ /* Add new patch number below this line */ { /* Add new patch number below this line */
/**/
1842,
/**/ /**/
1841, 1841,
/**/ /**/