summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarlos Martín Nieto <cmn@dwim.me>2015-03-13 18:28:07 +0100
committerCarlos Martín Nieto <cmn@dwim.me>2015-03-13 18:28:07 +0100
commitdccf59ad385489eef31a2521440bc07e7cc98a5b (patch)
tree224d5cc75e224f05b54892ca6fe2b4c9d260fb08
parenta34692c41921c97fd75f6f19fc1549f8abe38c1e (diff)
downloadlibgit2-dccf59ad385489eef31a2521440bc07e7cc98a5b.tar.gz
indexer: don't worry about duplicate objects
If a packfile includes duplicate objects, we can choose to use the secon copy instead of the first by using the same logic as if it were the first. Change the error condition from 0 to -1, which indicates a bad resize, and set the OOM message in that case. This does mean we will leak the first copy of the object. We can deal with that later, but making fetches work is more important.
-rw-r--r--src/indexer.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/src/indexer.c b/src/indexer.c
index f328025fd..68e903e05 100644
--- a/src/indexer.c
+++ b/src/indexer.c
@@ -287,9 +287,9 @@ static int store_object(git_indexer *idx)
pentry->offset = entry_start;
k = kh_put(oid, idx->pack->idx_cache, &pentry->sha1, &error);
- if (!error) {
+ if (error == -1) {
git__free(pentry);
- giterr_set(GITERR_INDEXER, "cannot handle duplicate objects in pack");
+ giterr_set_oom();
goto on_error;
}