reftable/reader: handle allocation failures for unindexed reader
Handle allocation failures when creating unindexed readers. Signed-off-by: Patrick Steinhardt <ps@pks.im> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:

committed by
Junio C Hamano

parent
802c0646ac
commit
18da600293
@ -734,19 +734,30 @@ static int reftable_reader_refs_for_unindexed(struct reftable_reader *r,
|
||||
REFTABLE_ALLOC_ARRAY(ti, 1);
|
||||
table_iter_init(ti, r);
|
||||
err = table_iter_seek_start(ti, BLOCK_TYPE_REF, 0);
|
||||
if (err < 0) {
|
||||
reftable_free(ti);
|
||||
return err;
|
||||
}
|
||||
if (err < 0)
|
||||
goto out;
|
||||
|
||||
filter = reftable_malloc(sizeof(struct filtering_ref_iterator));
|
||||
filter = reftable_malloc(sizeof(*filter));
|
||||
if (!filter) {
|
||||
err = REFTABLE_OUT_OF_MEMORY_ERROR;
|
||||
goto out;
|
||||
}
|
||||
*filter = empty;
|
||||
|
||||
strbuf_add(&filter->oid, oid, oid_len);
|
||||
iterator_from_table_iter(&filter->it, ti);
|
||||
|
||||
iterator_from_filtering_ref_iterator(it, filter);
|
||||
return 0;
|
||||
|
||||
err = 0;
|
||||
|
||||
out:
|
||||
if (err < 0) {
|
||||
if (ti)
|
||||
table_iter_close(ti);
|
||||
reftable_free(ti);
|
||||
}
|
||||
return err;
|
||||
}
|
||||
|
||||
int reftable_reader_refs_for(struct reftable_reader *r,
|
||||
|
Reference in New Issue
Block a user