Skip to content

Commit 18da600

Browse files
pks-tgitster
authored andcommitted
reftable/reader: handle allocation failures for unindexed reader
Handle allocation failures when creating unindexed readers. Signed-off-by: Patrick Steinhardt <[email protected]> Signed-off-by: Junio C Hamano <[email protected]>
1 parent 802c064 commit 18da600

File tree

1 file changed

+17
-6
lines changed

1 file changed

+17
-6
lines changed

reftable/reader.c

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -734,19 +734,30 @@ static int reftable_reader_refs_for_unindexed(struct reftable_reader *r,
734734
REFTABLE_ALLOC_ARRAY(ti, 1);
735735
table_iter_init(ti, r);
736736
err = table_iter_seek_start(ti, BLOCK_TYPE_REF, 0);
737-
if (err < 0) {
738-
reftable_free(ti);
739-
return err;
740-
}
737+
if (err < 0)
738+
goto out;
741739

742-
filter = reftable_malloc(sizeof(struct filtering_ref_iterator));
740+
filter = reftable_malloc(sizeof(*filter));
741+
if (!filter) {
742+
err = REFTABLE_OUT_OF_MEMORY_ERROR;
743+
goto out;
744+
}
743745
*filter = empty;
744746

745747
strbuf_add(&filter->oid, oid, oid_len);
746748
iterator_from_table_iter(&filter->it, ti);
747749

748750
iterator_from_filtering_ref_iterator(it, filter);
749-
return 0;
751+
752+
err = 0;
753+
754+
out:
755+
if (err < 0) {
756+
if (ti)
757+
table_iter_close(ti);
758+
reftable_free(ti);
759+
}
760+
return err;
750761
}
751762

752763
int reftable_reader_refs_for(struct reftable_reader *r,

0 commit comments

Comments
 (0)