diff options
author | René Scharfe <rene.scharfe@lsrfire.ath.cx> | 2011-10-01 18:02:36 +0200 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2011-10-03 11:15:31 -0700 |
commit | 5be7859962585589f374f8467f3252bfcfa10fd0 (patch) | |
tree | 9a95dc00c86fe143cc0a6c3e8d6a05da61abac02 /bundle.c | |
parent | 353f5657a8263bf4159d7e0450fb891df5e2b4c6 (diff) | |
download | git-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.c | 8 |
1 files changed, 3 insertions, 5 deletions
@@ -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; |