mirror of
https://git.proxmox.com/git/libgit2
synced 2025-05-07 16:22:40 +00:00
refdb: catch a directory disappearing
If a directory disappears between the time we look up the entries of its parent and the time when we go to look at it, we should ignore the error and move forward. This fixes #2046.
This commit is contained in:
parent
68581754f3
commit
a213a7bfa8
@ -853,6 +853,9 @@ int git_path_direach(
|
||||
|
||||
if ((dir = opendir(path->ptr)) == NULL) {
|
||||
giterr_set(GITERR_OS, "Failed to open directory '%s'", path->ptr);
|
||||
if (errno == ENOENT)
|
||||
return GIT_ENOTFOUND;
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
@ -272,9 +272,17 @@ static int _dirent_loose_load(void *payload, git_buf *full_path)
|
||||
if (git__suffixcmp(full_path->ptr, ".lock") == 0)
|
||||
return 0;
|
||||
|
||||
if (git_path_isdir(full_path->ptr))
|
||||
return git_path_direach(
|
||||
if (git_path_isdir(full_path->ptr)) {
|
||||
int error = git_path_direach(
|
||||
full_path, backend->direach_flags, _dirent_loose_load, backend);
|
||||
/* Race with the filesystem, ignore it */
|
||||
if (error == GIT_ENOTFOUND) {
|
||||
giterr_clear();
|
||||
return 0;
|
||||
}
|
||||
|
||||
return error;
|
||||
}
|
||||
|
||||
file_path = full_path->ptr + strlen(backend->path);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user