mirror of
https://git.proxmox.com/git/libgit2
synced 2025-05-09 15:00:04 +00:00
Merge pull request #3328 from libgit2/cmn/iterator-skip-diriter
iterator: skip over errors in diriter init
This commit is contained in:
commit
9d4b7d2524
@ -1027,8 +1027,11 @@ static int dirload_with_stat(
|
|||||||
strncomp = (flags & GIT_PATH_DIR_IGNORE_CASE) != 0 ?
|
strncomp = (flags & GIT_PATH_DIR_IGNORE_CASE) != 0 ?
|
||||||
git__strncasecmp : git__strncmp;
|
git__strncasecmp : git__strncmp;
|
||||||
|
|
||||||
if ((error = git_path_diriter_init(&diriter, dirpath, flags)) < 0)
|
/* Any error here is equivalent to the dir not existing, skip over it */
|
||||||
|
if ((error = git_path_diriter_init(&diriter, dirpath, flags)) < 0) {
|
||||||
|
error = GIT_ENOTFOUND;
|
||||||
goto done;
|
goto done;
|
||||||
|
}
|
||||||
|
|
||||||
while ((error = git_path_diriter_next(&diriter)) == 0) {
|
while ((error = git_path_diriter_next(&diriter)) == 0) {
|
||||||
if ((error = git_path_diriter_fullpath(&path, &path_len, &diriter)) < 0)
|
if ((error = git_path_diriter_fullpath(&path, &path_len, &diriter)) < 0)
|
||||||
|
@ -928,7 +928,7 @@ void test_repo_iterator__fs2(void)
|
|||||||
git_iterator_free(i);
|
git_iterator_free(i);
|
||||||
}
|
}
|
||||||
|
|
||||||
void test_repo_iterator__fs_preserves_error(void)
|
void test_repo_iterator__unreadable_dir(void)
|
||||||
{
|
{
|
||||||
git_iterator *i;
|
git_iterator *i;
|
||||||
const git_index_entry *e;
|
const git_index_entry *e;
|
||||||
@ -951,10 +951,6 @@ void test_repo_iterator__fs_preserves_error(void)
|
|||||||
|
|
||||||
cl_git_pass(git_iterator_advance(&e, i)); /* a */
|
cl_git_pass(git_iterator_advance(&e, i)); /* a */
|
||||||
cl_git_fail(git_iterator_advance(&e, i)); /* b */
|
cl_git_fail(git_iterator_advance(&e, i)); /* b */
|
||||||
cl_assert(giterr_last());
|
|
||||||
cl_assert(giterr_last()->message != NULL);
|
|
||||||
/* skip 'c/' empty directory */
|
|
||||||
cl_git_pass(git_iterator_advance(&e, i)); /* d */
|
|
||||||
cl_assert_equal_i(GIT_ITEROVER, git_iterator_advance(&e, i));
|
cl_assert_equal_i(GIT_ITEROVER, git_iterator_advance(&e, i));
|
||||||
|
|
||||||
cl_must_pass(p_chmod("empty_standard_repo/r/b", 0777));
|
cl_must_pass(p_chmod("empty_standard_repo/r/b", 0777));
|
||||||
|
Loading…
Reference in New Issue
Block a user