aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/undo.c
diff options
context:
space:
mode:
authorGregory Anders <greg@gpanders.com>2021-08-27 10:33:51 -0600
committerGregory Anders <greg@gpanders.com>2021-08-27 10:45:25 -0600
commit4e516e53bfde35901b055bbc85d84a6d471ebc34 (patch)
tree37a704585e064569b0cd4c90f2b2296af44ae8ae /src/nvim/undo.c
parent460019366e58e1bcd42959f76494e38bd895e762 (diff)
downloadrneovim-4e516e53bfde35901b055bbc85d84a6d471ebc34.tar.gz
rneovim-4e516e53bfde35901b055bbc85d84a6d471ebc34.tar.bz2
rneovim-4e516e53bfde35901b055bbc85d84a6d471ebc34.zip
fix: remove trailing slashes before making directory
Remove the trailing slashes from 'undofile' and 'backupdir' before creating directories. They cause problems on Windows which doesn't recognize these slashes as proper path separators.
Diffstat (limited to 'src/nvim/undo.c')
-rw-r--r--src/nvim/undo.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/src/nvim/undo.c b/src/nvim/undo.c
index e1a7dbb2d3..fb96d7e6ff 100644
--- a/src/nvim/undo.c
+++ b/src/nvim/undo.c
@@ -672,6 +672,7 @@ char *u_get_undo_file_name(const char *const buf_ffname, const bool reading)
#ifdef HAVE_READLINK
char fname_buf[MAXPATHL];
#endif
+ char *p;
if (ffname == NULL) {
return NULL;
@@ -704,6 +705,13 @@ char *u_get_undo_file_name(const char *const buf_ffname, const bool reading)
memmove(tail + tail_len + 1, ".un~", sizeof(".un~"));
} else {
dir_name[dir_len] = NUL;
+
+ // Remove trailing pathseps from directory name
+ p = &dir_name[dir_len - 1];
+ while (vim_ispathsep(*p)) {
+ *p-- = NUL;
+ }
+
bool has_directory = os_isdir((char_u *)dir_name);
if (!has_directory && *dirp == NUL && !reading) {
// Last directory in the list does not exist, create it.
@@ -720,7 +728,7 @@ char *u_get_undo_file_name(const char *const buf_ffname, const bool reading)
if (has_directory) {
if (munged_name == NULL) {
munged_name = xstrdup(ffname);
- for (char *p = munged_name; *p != NUL; MB_PTR_ADV(p)) {
+ for (p = munged_name; *p != NUL; MB_PTR_ADV(p)) {
if (vim_ispathsep(*p)) {
*p = '%';
}