diff options
author | Jeff King <peff@peff.net> | 2010-02-19 00:57:21 -0500 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2010-02-18 22:22:22 -0800 |
commit | 3fc0d131c573f6f774e2e4abba9cbda694b08321 (patch) | |
tree | f15d2c7a0f6b868656dec035b3db98d54d0be6b4 /dir.c | |
parent | f01f1099f40f24fe6f7802185340a6fa3a3d4f35 (diff) | |
download | git-3fc0d131c573f6f774e2e4abba9cbda694b08321.tar.gz git-3fc0d131c573f6f774e2e4abba9cbda694b08321.tar.xz |
rm: fix bug in recursive subdirectory removal
If we remove a path in a/deep/subdirectory, we should try to
remove as many trailing components as possible (i.e.,
subdirectory, then deep, then a). However, the test for the
return value of rmdir was reversed, so we only ever deleted
at most one level.
The fix is in remove_path, so "apply" and "merge-recursive"
also are fixed.
Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'dir.c')
-rw-r--r-- | dir.c | 2 |
1 files changed, 1 insertions, 1 deletions
@@ -864,7 +864,7 @@ int remove_path(const char *name) slash = dirs + (slash - name); do { *slash = '\0'; - } while (rmdir(dirs) && (slash = strrchr(dirs, '/'))); + } while (rmdir(dirs) == 0 && (slash = strrchr(dirs, '/'))); free(dirs); } return 0; |