Commit 2dc49ea93c5c320216806089fee579021f3ce9cf

Vicent Marti 2014-02-19T00:21:38

Merge pull request #2124 from libgit2/better-shallow-errors Improve error propagation in shallow call

diff --git a/src/repository.c b/src/repository.c
index 9f0c2f6..96ed306 100644
--- a/src/repository.c
+++ b/src/repository.c
@@ -2001,9 +2001,12 @@ 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 error;
 	return 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());
+}