summaryrefslogtreecommitdiff
path: root/bundle.c
diff options
context:
space:
mode:
authorRené Scharfe <rene.scharfe@lsrfire.ath.cx>2011-10-01 18:02:36 +0200
committerJunio C Hamano <gitster@pobox.com>2011-10-03 11:15:31 -0700
commit5be7859962585589f374f8467f3252bfcfa10fd0 (patch)
tree9a95dc00c86fe143cc0a6c3e8d6a05da61abac02 /bundle.c
parent353f5657a8263bf4159d7e0450fb891df5e2b4c6 (diff)
downloadgit-5be7859962585589f374f8467f3252bfcfa10fd0.tar.gz
bundle: use leak_pending flag
Instead of creating a copy of the list of pending objects, copy the struct object_array that points to it, turn on leak_pending, and thus cause prepare_revision_walk to leave it to us. And free it once we're done. Signed-off-by: Rene Scharfe <rene.scharfe@lsrfire.ath.cx> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'bundle.c')
-rw-r--r--bundle.c8
1 files changed, 3 insertions, 5 deletions
diff --git a/bundle.c b/bundle.c
index f48fd7d4c1..26cc9ab507 100644
--- a/bundle.c
+++ b/bundle.c
@@ -122,11 +122,8 @@ int verify_bundle(struct bundle_header *header, int verbose)
req_nr = revs.pending.nr;
setup_revisions(2, argv, &revs, NULL);
- memset(&refs, 0, sizeof(struct object_array));
- for (i = 0; i < revs.pending.nr; i++) {
- struct object_array_entry *e = revs.pending.objects + i;
- add_object_array(e->item, e->name, &refs);
- }
+ refs = revs.pending;
+ revs.leak_pending = 1;
if (prepare_revision_walk(&revs))
die("revision walk setup failed");
@@ -146,6 +143,7 @@ int verify_bundle(struct bundle_header *header, int verbose)
for (i = 0; i < refs.nr; i++)
clear_commit_marks((struct commit *)refs.objects[i].item, -1);
+ free(refs.objects);
if (verbose) {
struct ref_list *r;