vim-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 vim/vim#5807)
a3a9c8ef69

Nvim doesn't have buftype=popup and doesn't allow buftype=terminal for
non-terminal buffer.
This commit is contained in:
zeertzjq
2022-07-15 17:39:06 +08:00
parent 4a64cdafd6
commit 0cf5cd1ac9
2 changed files with 12 additions and 6 deletions

View File

@@ -1980,17 +1980,14 @@ theend:
/// @return OK if it's OK, FAIL if it is not.
int check_overwrite(exarg_T *eap, buf_T *buf, char *fname, char *ffname, int other)
{
/*
* 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)
|| ((buf->b_flags & BF_NEW)
&& vim_strchr(p_cpo, CPO_OVERNEW) == NULL)
|| (buf->b_flags & BF_READERR))
&& !p_wa
&& !bt_nofilename(buf)
&& os_path_exists((char_u *)ffname)) {
if (!eap->forceit && !eap->append) {
#ifdef UNIX