Commit b3d3459f32805a1290c5f1811b26a3e9e51a10df

Carlos Martín Nieto 2014-08-26T15:09:47

pack: return the correct final offset The callers of git_packfile_unpack() expect the obj_offset argument to be set to the beginning of the next object. We were mistakenly returning the the offset of the object's data, which causes the CRC function to try to use the wrong offset. Set obj_offset to curpos instead of elem->offset to point to the next element and bring back expected behaviour.

1
2
3
4
5
6
7
8
9
10
11
12
13
diff --git a/src/pack.c b/src/pack.c
index 22dbd56..b05aa91 100644
--- a/src/pack.c
+++ b/src/pack.c
@@ -744,7 +744,7 @@ cleanup:
 		git__free(obj->data);
 
 	if (elem)
-		*obj_offset = elem->offset;
+		*obj_offset = curpos;
 
 	git_array_clear(chain);
 	return error;