Improve error propagation in shallow call
diff --git a/src/repository.c b/src/repository.c
index 9f0c2f6..89ae324 100644
--- a/src/repository.c
+++ b/src/repository.c
@@ -2001,9 +2001,10 @@ int git_repository_is_shallow(git_repository *repo)
error = git_path_lstat(path.ptr, &st);
git_buf_free(&path);
- if (error == GIT_ENOTFOUND)
+ if (error == GIT_ENOTFOUND) {
+ giterr_clear();
return 0;
- if (error < 0)
- return -1;
- return st.st_size == 0 ? 0 : 1;
+ }
+
+ return error < 0 ? error : st.st_size == 0 ? 0 : 1;
}
diff --git a/tests/repo/shallow.c b/tests/repo/shallow.c
index 1cc66ae..5aeaf2d 100644
--- a/tests/repo/shallow.c
+++ b/tests/repo/shallow.c
@@ -31,3 +31,9 @@ void test_repo_shallow__shallow_repo(void)
cl_assert_equal_i(1, git_repository_is_shallow(g_repo));
}
+void test_repo_shallow__clears_errors(void)
+{
+ g_repo = cl_git_sandbox_init("testrepo.git");
+ cl_assert_equal_i(0, git_repository_is_shallow(g_repo));
+ cl_assert_equal_p(NULL, giterr_last());
+}