0
0
mirror of https://github.com/vim/vim.git synced 2025-07-26 11:04:33 -04:00

patch 8.2.0403: when 'buftype' is "nofile" there is no overwrite check

Problem:    When 'buftype' is "nofile" there is no overwrite check.
Solution:   Also check for existing file when 'buftype' is set.
            (closes #5807)
This commit is contained in:
Bram Moolenaar 2020-03-19 12:38:34 +01:00
parent 30d53e2c11
commit a3a9c8ef69
3 changed files with 13 additions and 6 deletions

View File

@ -2074,8 +2074,8 @@ check_overwrite(
int other) // writing under other name
{
/*
* write to other file or b_flags set or not writing the whole file:
* overwriting only allowed with '!'
* Write to another file or b_flags set or not writing the whole file:
* overwriting only allowed with '!'.
*/
if ( (other
|| (buf->b_flags & BF_NOTEDITED)
@ -2083,9 +2083,6 @@ check_overwrite(
&& vim_strchr(p_cpo, CPO_OVERNEW) == NULL)
|| (buf->b_flags & BF_READERR))
&& !p_wa
#ifdef FEAT_QUICKFIX
&& !bt_nofilename(buf)
#endif
&& vim_fexists(ffname))
{
if (!eap->forceit && !eap->append)

View File

@ -656,7 +656,15 @@ func Test_buftype()
call setline(1, ['L1'])
set buftype=nowrite
call assert_fails('write', 'E382:')
close!
for val in ['', 'nofile', 'nowrite', 'acwrite', 'quickfix', 'help', 'terminal', 'prompt', 'popup']
exe 'set buftype=' .. val
call writefile(['something'], 'XBuftype')
call assert_fails('write XBuftype', 'E13:', 'with buftype=' .. val)
endfor
call delete('XBuftype')
bwipe!
endfunc
" Test for the 'shellquote' option

View File

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