mirror of
https://github.com/git/git.git
synced 2026-02-22 07:44:55 +00:00
Win32: fix deletion of .git/objects sub-directories in git-repack
On Windows XP (not Win7), directories cannot be deleted while a find handle
is open, causing "Deletion of directory '...' failed. Should I try again?"
prompts in git-repack and git-gc.
Prior to 19d1e75d "Win32: Unicode file name support (except dirent)",
these failures were silently ignored due to strbuf_free in is_dir_empty
resetting GetLastError to ERROR_SUCCESS.
Close find handles properly before trying to delete directories.
Reported-by: John Chen <john0312@gmail.com>
Signed-off-by: Karsten Blees <blees@dcon.de>
This commit is contained in:
committed by
Johannes Schindelin
parent
ba17441657
commit
1dce46129c
@@ -238,11 +238,12 @@ static int is_dir_empty(const char *path)
|
||||
return GetLastError() == ERROR_NO_MORE_FILES;
|
||||
}
|
||||
|
||||
while (!strcmp(findbuf.cFileName, ".") ||
|
||||
!strcmp(findbuf.cFileName, ".."))
|
||||
if (!FindNextFile(handle, &findbuf)) {
|
||||
strbuf_release(&buf);
|
||||
return GetLastError() == ERROR_NO_MORE_FILES;
|
||||
while (!wcscmp(findbuf.cFileName, L".") ||
|
||||
!wcscmp(findbuf.cFileName, L".."))
|
||||
if (!FindNextFileW(handle, &findbuf)) {
|
||||
DWORD err = GetLastError();
|
||||
FindClose(handle);
|
||||
return err == ERROR_NO_MORE_FILES;
|
||||
}
|
||||
FindClose(handle);
|
||||
strbuf_release(&buf);
|
||||
|
||||
Reference in New Issue
Block a user