diff --git a/src/nvim/bufwrite.c b/src/nvim/bufwrite.c index 2993d14d20..2f692f77e1 100644 --- a/src/nvim/bufwrite.c +++ b/src/nvim/bufwrite.c @@ -698,7 +698,7 @@ char *buf_get_backup_name(char *fname, char **dirp, bool no_prepend_dot, char *b xfree(failed_dir); } } - if (after_pathsep(IObuff, p) && p[-1] == p[-2]) { + if (dir_len > 1 && after_pathsep(IObuff, p) && p[-1] == p[-2]) { // path ends with '//', use full path if ((p = make_percent_swname(IObuff, p, fname)) != NULL) { diff --git a/src/nvim/undo.c b/src/nvim/undo.c index 4a4e0daba7..d6d443b0d8 100644 --- a/src/nvim/undo.c +++ b/src/nvim/undo.c @@ -712,7 +712,7 @@ char *u_get_undo_file_name(const char *const buf_ffname, const bool reading) // Remove trailing pathseps from directory name char *p = &dir_name[dir_len - 1]; - while (vim_ispathsep(*p)) { + while (dir_len > 1 && vim_ispathsep(*p)) { *p-- = NUL; dir_len--; }