Skip to content

Commit 4d01a7f

Browse files
Martin Ågrengitster
authored andcommitted
pack-bitmap[-write]: use object_array_clear(), don't leak
Instead of setting the fields of rev->pending to 0/NULL, thereby leaking memory, call `object_array_clear(&rev->pending)`. In pack-bitmap.c, we make copies of those fields as `pending_nr` and `pending_e`. We never update the aliases and the original fields never change, so the aliases are not really needed and just make it harder than necessary to understand the code. While we're here, remove the aliases to make the code easier to follow. Signed-off-by: Martin Ågren <[email protected]> Reviewed-by: Jeff King <[email protected]> Signed-off-by: Junio C Hamano <[email protected]>
1 parent 7199203 commit 4d01a7f

File tree

2 files changed

+4
-10
lines changed

2 files changed

+4
-10
lines changed

pack-bitmap-write.c

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -297,9 +297,7 @@ void bitmap_writer_build(struct packing_data *to_pack)
297297

298298
traverse_commit_list(&revs, show_commit, show_object, base);
299299

300-
revs.pending.nr = 0;
301-
revs.pending.alloc = 0;
302-
revs.pending.objects = NULL;
300+
object_array_clear(&revs.pending);
303301

304302
stored->bitmap = bitmap_to_ewah(base);
305303
need_reset = 0;

pack-bitmap.c

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -653,8 +653,6 @@ static int in_bitmapped_pack(struct object_list *roots)
653653
int prepare_bitmap_walk(struct rev_info *revs)
654654
{
655655
unsigned int i;
656-
unsigned int pending_nr = revs->pending.nr;
657-
struct object_array_entry *pending_e = revs->pending.objects;
658656

659657
struct object_list *wants = NULL;
660658
struct object_list *haves = NULL;
@@ -669,8 +667,8 @@ int prepare_bitmap_walk(struct rev_info *revs)
669667
return -1;
670668
}
671669

672-
for (i = 0; i < pending_nr; ++i) {
673-
struct object *object = pending_e[i].item;
670+
for (i = 0; i < revs->pending.nr; ++i) {
671+
struct object *object = revs->pending.objects[i].item;
674672

675673
if (object->type == OBJ_NONE)
676674
parse_object_or_die(&object->oid, NULL);
@@ -714,9 +712,7 @@ int prepare_bitmap_walk(struct rev_info *revs)
714712
if (!bitmap_git.loaded && load_pack_bitmap() < 0)
715713
return -1;
716714

717-
revs->pending.nr = 0;
718-
revs->pending.alloc = 0;
719-
revs->pending.objects = NULL;
715+
object_array_clear(&revs->pending);
720716

721717
if (haves) {
722718
revs->ignore_missing_links = 1;

0 commit comments

Comments
 (0)