summaryrefslogtreecommitdiff
path: root/src/libgit2/odb_pack.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/libgit2/odb_pack.c')
-rw-r--r--src/libgit2/odb_pack.c19
1 files changed, 16 insertions, 3 deletions
diff --git a/src/libgit2/odb_pack.c b/src/libgit2/odb_pack.c
index 1b1d122b0..fc533ae83 100644
--- a/src/libgit2/odb_pack.c
+++ b/src/libgit2/odb_pack.c
@@ -309,11 +309,17 @@ static int pack_entry_find_prefix(
{
int error;
size_t i;
- git_oid found_full_oid = GIT_OID_SHA1_ZERO;
+ git_oid found_full_oid;
bool found = false;
struct git_pack_file *last_found = backend->last_found, *p;
git_midx_entry midx_entry;
+#ifdef GIT_EXPERIMENTAL_SHA256
+ git_oid_clear(&found_full_oid, short_oid->type);
+#else
+ git_oid_clear(&found_full_oid, GIT_OID_SHA1);
+#endif
+
if (backend->midx) {
error = git_midx_entry_find(&midx_entry, backend->midx, short_oid, len);
if (error == GIT_EAMBIGUOUS)
@@ -473,7 +479,9 @@ static int refresh_multi_pack_index(struct pack_backend *backend)
}
}
- error = git_midx_open(&backend->midx, git_str_cstr(&midx_path));
+ error = git_midx_open(&backend->midx, git_str_cstr(&midx_path),
+ backend->opts.oid_type);
+
git_str_dispose(&midx_path);
if (error < 0)
return error;
@@ -792,7 +800,12 @@ static int pack_backend__writemidx(git_odb_backend *_backend)
backend = (struct pack_backend *)_backend;
- error = git_midx_writer_new(&w, backend->pack_folder);
+ error = git_midx_writer_new(&w, backend->pack_folder
+#ifdef GIT_EXPERIMENTAL_SHA256
+ , backend->opts.oid_type
+#endif
+ );
+
if (error < 0)
return error;