diff options
author | Patrick Steinhardt <ps@pks.im> | 2020-06-01 13:19:01 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-06-01 13:19:01 +0200 |
commit | 89ddd0fc740093d793a87452e0c707671710e1bf (patch) | |
tree | 544424209dfe346c332fdcda18a32d26fa5a0bd9 | |
parent | 27cb4e0ec193aa5430d1a32fd90b5dc2d86f5fe1 (diff) | |
parent | 1a8990082aeeb1fbf6028d7c2b480f3086c87307 (diff) | |
download | libgit2-89ddd0fc740093d793a87452e0c707671710e1bf.tar.gz |
Merge pull request #5533 from pjw91/fix-index-write
Make git_index_write() generate valid v4 index
-rw-r--r-- | src/index.c | 4 | ||||
-rw-r--r-- | tests/index/version.c | 5 |
2 files changed, 6 insertions, 3 deletions
diff --git a/src/index.c b/src/index.c index 907bd6d93..36a8bdb7b 100644 --- a/src/index.c +++ b/src/index.c @@ -2744,7 +2744,7 @@ static int write_disk_entry(git_filebuf *file, git_index_entry *entry, const cha ++same_len; } path_len -= same_len; - varint_len = git_encode_varint(NULL, 0, same_len); + varint_len = git_encode_varint(NULL, 0, strlen(last) - same_len); } disk_size = index_entry_size(path_len, varint_len, entry->flags); @@ -2795,7 +2795,7 @@ static int write_disk_entry(git_filebuf *file, git_index_entry *entry, const cha if (last) { varint_len = git_encode_varint((unsigned char *) path, - disk_size, same_len); + disk_size, strlen(last) - same_len); assert(varint_len > 0); path += varint_len; disk_size -= varint_len; diff --git a/tests/index/version.c b/tests/index/version.c index 3827df861..b6c0b7918 100644 --- a/tests/index/version.c +++ b/tests/index/version.c @@ -43,6 +43,7 @@ void test_index_version__can_write_v4(void) "xz", "xyzzyx" }; + git_repository *repo; git_index_entry entry; git_index *index; size_t i; @@ -63,7 +64,8 @@ void test_index_version__can_write_v4(void) cl_git_pass(git_index_write(index)); git_index_free(index); - cl_git_pass(git_repository_index(&index, g_repo)); + cl_git_pass(git_repository_open(&repo, git_repository_path(g_repo))); + cl_git_pass(git_repository_index(&index, repo)); cl_assert(git_index_version(index) == 4); for (i = 0; i < ARRAY_SIZE(paths); i++) { @@ -74,6 +76,7 @@ void test_index_version__can_write_v4(void) } git_index_free(index); + git_repository_free(repo); } void test_index_version__v4_uses_path_compression(void) |