Commit c71dff7e8a1bde298972c10901802608bd4cbb55

Patrick Steinhardt 2017-05-19T13:49:34

index: fix shared prefix computation when writing index entry When using compressed index entries, each entry's path is preceded by a varint encoding how long the shared prefix with the previous index entry actually is. We currently encode a length of `(path_len - same_len)`, which is doubly wrong. First, `path_len` is already set to `path_len - same_len` previously. Second, we want to encode the shared prefix rather than the un-shared suffix length. Fix this by using `same_len` as the varint value instead.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
diff --git a/src/index.c b/src/index.c
index bff5d7f..860adaf 100644
--- a/src/index.c
+++ b/src/index.c
@@ -2661,8 +2661,7 @@ static int write_disk_entry(git_filebuf *file, git_index_entry *entry, const cha
 
 	if (last) {
 		path += git_encode_varint((unsigned char *) path,
-					  disk_size,
-					  path_len - same_len);
+					  disk_size, same_len);
 	}
 	memcpy(path, path_start, path_len);