From 1810e4398f4fe5603540a3e6e56bf991d447c452 Mon Sep 17 00:00:00 2001 From: Johannes Sixt Date: Wed, 12 Aug 2015 19:43:01 +0200 Subject: [PATCH] prune: close directory earlier during loose-object directory traversal 27e1e22d (prune: factor out loose-object directory traversal, 2014-10-16) introduced a new function for_each_loose_file_in_objdir() with a helper for_each_file_in_obj_subdir(). The latter calls callbacks for each file found during a directory traversal and finally also a callback for the directory itself. git-prune uses the function to clean up the object directory. In particular, in the directory callback it calls rmdir(). On Windows XP, this rmdir call fails, because the directory is still open while the callback is called. Close the directory before calling the callback. Signed-off-by: Johannes Sixt Signed-off-by: Johannes Schindelin --- sha1_file.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sha1_file.c b/sha1_file.c index 62b8ce3d19af57..edc5089dcfddd7 100644 --- a/sha1_file.c +++ b/sha1_file.c @@ -3503,12 +3503,12 @@ static int for_each_file_in_obj_subdir(int subdir_nr, break; } } - strbuf_setlen(path, baselen); + closedir(dir); + strbuf_setlen(path, baselen); if (!r && subdir_cb) r = subdir_cb(subdir_nr, path->buf, data); - closedir(dir); return r; }