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:
@@ -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
|
||||||
{
|
{
|
||||||
|
@@ -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
|
||||||
{
|
{
|
||||||
|
@@ -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
|
||||||
|
@@ -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,
|
||||||
/**/
|
/**/
|
||||||
|
Reference in New Issue
Block a user