mirror of
https://github.com/vim/vim.git
synced 2025-09-24 03:44:06 -04:00
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:
@@ -2465,6 +2465,7 @@ do_ecmd(
|
||||
bufref_T old_curbuf;
|
||||
char_u *free_fname = NULL;
|
||||
#ifdef FEAT_BROWSE
|
||||
char_u dot_path[] = ".";
|
||||
char_u *browse_file = NULL;
|
||||
#endif
|
||||
int retval = FAIL;
|
||||
@@ -2511,7 +2512,7 @@ do_ecmd(
|
||||
// No browsing supported but we do have the file explorer:
|
||||
// Edit the directory.
|
||||
if (ffname == NULL || !mch_isdir(ffname))
|
||||
ffname = (char_u *)".";
|
||||
ffname = dot_path;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@@ -6084,6 +6084,7 @@ ex_splitview(exarg_T *eap)
|
||||
char_u *fname = NULL;
|
||||
#endif
|
||||
#ifdef FEAT_BROWSE
|
||||
char_u dot_path[] = ".";
|
||||
int browse_flag = cmdmod.browse;
|
||||
#endif
|
||||
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:
|
||||
// Edit the directory.
|
||||
if (*eap->arg == NUL || !mch_isdir(eap->arg))
|
||||
eap->arg = (char_u *)".";
|
||||
eap->arg = dot_path;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@@ -1805,4 +1805,22 @@ func Test_edit_lastline_scroll()
|
||||
close!
|
||||
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
|
||||
|
@@ -750,6 +750,8 @@ static char *(features[]) =
|
||||
|
||||
static int included_patches[] =
|
||||
{ /* Add new patch number below this line */
|
||||
/**/
|
||||
1842,
|
||||
/**/
|
||||
1841,
|
||||
/**/
|
||||
|
Reference in New Issue
Block a user