]> git.proxmox.com Git - libgit2.git/commitdiff
Fix error hashing empty file.
authorJameson Miller <jamill@microsoft.com>
Wed, 26 Sep 2012 21:21:32 +0000 (17:21 -0400)
committerJameson Miller <jamill@microsoft.com>
Thu, 27 Sep 2012 17:12:27 +0000 (13:12 -0400)
src/odb.c
tests-clar/status/single.c

index d1ffff652c556856625c8c436726a76efcd68ba3..d951bc51b49f12d3269e5f3e2cda0db6adf3a1ba 100644 (file)
--- a/src/odb.c
+++ b/src/odb.c
@@ -115,7 +115,7 @@ int git_odb__hashfd(git_oid *out, git_file fd, size_t size, git_otype type)
        int hdr_len;
        char hdr[64], buffer[2048];
        git_hash_ctx *ctx;
-       ssize_t read_len = -1;
+       ssize_t read_len = 0;
 
        if (!git_object_typeisloose(type)) {
                giterr_set(GITERR_INVALID, "Invalid object type for hash");
index e900a31d6b23ca1638e4bc48ac64e7e220c71c6d..292c9120a84abfd0e626faa3274838eb45c88795 100644 (file)
@@ -25,5 +25,21 @@ void test_status_single__hash_single_file(void)
        cl_assert(git_oid_cmp(&expected_id, &actual_id) == 0);
 }
 
+/* test retrieving OID from an empty file apart from the ODB */
+void test_status_single__hash_single_empty_file(void)
+{
+       static const char file_name[] = "new_empty_file";
+       static const char file_contents[] = "";
+       static const char file_hash[] = "e69de29bb2d1d6434b8b29ae775ad8c2e48c5391";
+
+       git_oid expected_id, actual_id;
 
+       /* initialization */
+       git_oid_fromstr(&expected_id, file_hash);
+       cl_git_mkfile(file_name, file_contents);
+       cl_set_cleanup(&cleanup__remove_file, (void *)file_name);
+
+       cl_git_pass(git_odb_hashfile(&actual_id, file_name, GIT_OBJ_BLOB));
+       cl_assert(git_oid_cmp(&expected_id, &actual_id) == 0);
+}