Commit 9d4b7d25 by Edward Thomson

Merge pull request #3328 from libgit2/cmn/iterator-skip-diriter

iterator: skip over errors in diriter init
parents a8058ffd 0e391d85
...@@ -1027,8 +1027,11 @@ static int dirload_with_stat( ...@@ -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) ...@@ -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) ...@@ -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));
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment