summaryrefslogtreecommitdiffstats
path: root/src/fileio.c
diff options
context:
space:
mode:
authorzeertzjq <zeertzjq@outlook.com>2022-04-05 15:31:01 +0100
committerBram Moolenaar <Bram@vim.org>2022-04-05 15:31:01 +0100
commit478700336d1c72e133b8ff6841e968c1bb1658ed (patch)
tree326bd148a82456b62d4a8464453add9fe06eaa4e /src/fileio.c
parentbeb0ef1ab2dbd9760345e3e03647b93914591d56 (diff)
patch 8.2.4696: delete() with "rf" argument does not report a failurev8.2.4696
Problem: delete() with "rf" argument does not report a failure. Solution: Return -1 if the directory could not be removed. (closes #10078)
Diffstat (limited to 'src/fileio.c')
-rw-r--r--src/fileio.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/src/fileio.c b/src/fileio.c
index 9ef2dbd3bc..af915c665f 100644
--- a/src/fileio.c
+++ b/src/fileio.c
@@ -5017,13 +5017,16 @@ delete_recursive(char_u *name)
vim_snprintf((char *)NameBuff, MAXPATHL, "%s/%s", exp,
((char_u **)ga.ga_data)[i]);
if (delete_recursive(NameBuff) != 0)
+ // Remember the failure but continue deleting any further
+ // entries.
result = -1;
}
ga_clear_strings(&ga);
+ if (mch_rmdir(exp) != 0)
+ result = -1;
}
else
result = -1;
- (void)mch_rmdir(exp);
vim_free(exp);
}
else