+ git_SHA1_Update(&new_sha1_ctx, buf, n);
+
+ aligned_sz -= n;
+ if (!aligned_sz)
+ aligned_sz = buf_sz;
+
+ if (!partial_pack_sha1)
+ continue;
+
+ git_SHA1_Update(&old_sha1_ctx, buf, n);
+ partial_pack_offset -= n;
+ if (partial_pack_offset == 0) {
+ unsigned char sha1[20];
+ git_SHA1_Final(sha1, &old_sha1_ctx);
+ if (hashcmp(sha1, partial_pack_sha1) != 0)
+ die("Unexpected checksum for %s "
+ "(disk corruption?)", pack_name);
+ /*
+ * Now let's compute the SHA1 of the remainder of the
+ * pack, which also means making partial_pack_offset
+ * big enough not to matter anymore.
+ */
+ git_SHA1_Init(&old_sha1_ctx);
+ partial_pack_offset = ~partial_pack_offset;
+ partial_pack_offset -= MSB(partial_pack_offset, 1);
+ }