]> git.ipfire.org Git - thirdparty/git.git/commitdiff
reftable tests: check reftable_table_init_ref_iterator() return
authorJohannes Schindelin <johannes.schindelin@gmx.de>
Tue, 14 Jul 2026 22:48:37 +0000 (22:48 +0000)
committerJunio C Hamano <gitster@pobox.com>
Wed, 15 Jul 2026 01:02:01 +0000 (18:02 -0700)
test_reftable_table__seek_once() and test_reftable_table__reseek()
both call reftable_table_init_ref_iterator() without checking its
return value. This function returns an int error code (0 on
success, negative on failure). Every other reftable function call
in these same tests checks the return via cl_assert_equal_i() or
cl_assert(), making this omission inconsistent.

If the iterator initialization ever fails (e.g., due to a memory
allocation failure in the reftable internals), the test would
proceed to seek and read with an uninitialized iterator, producing
misleading test results or crashes rather than a clear assertion
failure.

Check the return value via cl_assert_equal_i(ret, 0), consistent
with the surrounding code.

Pointed out by Coverity.

Assisted-by: Claude Opus 4.6
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
t/unit-tests/u-reftable-table.c

index fae478ee044c487dac5aaf13a2a644f90de445f4..6f444f8cf94fb0e5ea3a6c7b00c02b23971156de 100644 (file)
@@ -29,7 +29,8 @@ void test_reftable_table__seek_once(void)
        ret = reftable_table_new(&table, &source, "name");
        cl_assert(!ret);
 
-       reftable_table_init_ref_iterator(table, &it);
+       ret = reftable_table_init_ref_iterator(table, &it);
+       cl_assert_equal_i(ret, 0);
        ret = reftable_iterator_seek_ref(&it, "");
        cl_assert(!ret);
        ret = reftable_iterator_next_ref(&it, &ref);
@@ -71,7 +72,8 @@ void test_reftable_table__reseek(void)
        ret = reftable_table_new(&table, &source, "name");
        cl_assert(!ret);
 
-       reftable_table_init_ref_iterator(table, &it);
+       ret = reftable_table_init_ref_iterator(table, &it);
+       cl_assert_equal_i(ret, 0);
 
        for (size_t i = 0; i < 5; i++) {
                ret = reftable_iterator_seek_ref(&it, "");