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:
parent
353f5657a8
commit
5be7859962
8
bundle.c
8
bundle.c
@ -122,11 +122,8 @@ int verify_bundle(struct bundle_header *header, int verbose)
|
|||||||
req_nr = revs.pending.nr;
|
req_nr = revs.pending.nr;
|
||||||
setup_revisions(2, argv, &revs, NULL);
|
setup_revisions(2, argv, &revs, NULL);
|
||||||
|
|
||||||
memset(&refs, 0, sizeof(struct object_array));
|
refs = revs.pending;
|
||||||
for (i = 0; i < revs.pending.nr; i++) {
|
revs.leak_pending = 1;
|
||||||
struct object_array_entry *e = revs.pending.objects + i;
|
|
||||||
add_object_array(e->item, e->name, &refs);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (prepare_revision_walk(&revs))
|
if (prepare_revision_walk(&revs))
|
||||||
die("revision walk setup failed");
|
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++)
|
for (i = 0; i < refs.nr; i++)
|
||||||
clear_commit_marks((struct commit *)refs.objects[i].item, -1);
|
clear_commit_marks((struct commit *)refs.objects[i].item, -1);
|
||||||
|
free(refs.objects);
|
||||||
|
|
||||||
if (verbose) {
|
if (verbose) {
|
||||||
struct ref_list *r;
|
struct ref_list *r;
|
||||||
|
Loading…
Reference in New Issue
Block a user