Merge pull request #2164 from libgit2/cmn/refs-delete-iteration

refdb: catch a directory disappearing
This commit is contained in:
Vicent Marti 2014-03-05 21:07:20 +01:00
commit a62ad3c353
2 changed files with 13 additions and 2 deletions

View File

@ -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;
}

View File

@ -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);