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>
This commit is contained in:
René Scharfe 2011-10-01 18:02:36 +02:00 committed by Junio C Hamano
parent 353f5657a8
commit 5be7859962

View File

@ -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;