Commit be4717d2a1f8ee152e46b2afc8d8510bc82243a5

Etienne Samson 2018-09-18T12:12:06

path: fix "comparison always true" warning

diff --git a/src/path.c b/src/path.c
index c8bc8d4..9fab29e 100644
--- a/src/path.c
+++ b/src/path.c
@@ -1887,7 +1887,7 @@ extern int git_path_is_gitfile(const char *path, size_t pathlen, git_path_gitfil
 	const char *file, *hash;
 	size_t filelen;
 
-	if (gitfile < 0 && gitfile >= ARRAY_SIZE(gitfiles)) {
+	if (!(gitfile >= GIT_PATH_GITFILE_GITIGNORE && gitfile < ARRAY_SIZE(gitfiles))) {
 		giterr_set(GITERR_OS, "invalid gitfile for path validation");
 		return -1;
 	}
diff --git a/tests/core/path.c b/tests/core/path.c
index 6910fab..058a710 100644
--- a/tests/core/path.c
+++ b/tests/core/path.c
@@ -676,3 +676,12 @@ void test_core_path__16_resolve_relative(void)
 	assert_common_dirlen(6, "a/b/c/foo.txt", "a/b/c/d/e/bar.txt");
 	assert_common_dirlen(7, "/a/b/c/foo.txt", "/a/b/c/d/e/bar.txt");
 }
+
+void test_core_path__git_path_is_file(void)
+{
+	cl_git_fail(git_path_is_gitfile("blob", 4, -1, GIT_PATH_FS_HFS));
+	cl_git_pass(git_path_is_gitfile("blob", 4, GIT_PATH_GITFILE_GITIGNORE, GIT_PATH_FS_HFS));
+	cl_git_pass(git_path_is_gitfile("blob", 4, GIT_PATH_GITFILE_GITMODULES, GIT_PATH_FS_HFS));
+	cl_git_pass(git_path_is_gitfile("blob", 4, GIT_PATH_GITFILE_GITATTRIBUTES, GIT_PATH_FS_HFS));
+	cl_git_fail(git_path_is_gitfile("blob", 4, 3, GIT_PATH_FS_HFS));
+}