Skip to content

Commit 5be7859

Browse files
René Scharfegitster
authored andcommitted
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>
1 parent 353f565 commit 5be7859

File tree

1 file changed

+3
-5
lines changed

1 file changed

+3
-5
lines changed

bundle.c

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -122,11 +122,8 @@ int verify_bundle(struct bundle_header *header, int verbose)
122122
req_nr = revs.pending.nr;
123123
setup_revisions(2, argv, &revs, NULL);
124124

125-
memset(&refs, 0, sizeof(struct object_array));
126-
for (i = 0; i < revs.pending.nr; i++) {
127-
struct object_array_entry *e = revs.pending.objects + i;
128-
add_object_array(e->item, e->name, &refs);
129-
}
125+
refs = revs.pending;
126+
revs.leak_pending = 1;
130127

131128
if (prepare_revision_walk(&revs))
132129
die("revision walk setup failed");
@@ -146,6 +143,7 @@ int verify_bundle(struct bundle_header *header, int verbose)
146143

147144
for (i = 0; i < refs.nr; i++)
148145
clear_commit_marks((struct commit *)refs.objects[i].item, -1);
146+
free(refs.objects);
149147

150148
if (verbose) {
151149
struct ref_list *r;

0 commit comments

Comments
 (0)