From 271af4c6b9beeda938cfc5305cb8819fa3584c70 Mon Sep 17 00:00:00 2001 From: Eduardo Silva Date: Sat, 11 Jul 2026 12:22:06 -0600 Subject: [PATCH] array: report missing reference on removal Signed-off-by: Eduardo Silva --- src/cfl_array.c | 2 +- tests/array.c | 29 +++++++++++++++++++++++++++++ 2 files changed, 30 insertions(+), 1 deletion(-) diff --git a/src/cfl_array.c b/src/cfl_array.c index 08b7e93..b327c91 100644 --- a/src/cfl_array.c +++ b/src/cfl_array.c @@ -174,7 +174,7 @@ int cfl_array_remove_by_reference(struct cfl_array *array, } } - return 0; + return -1; } int cfl_array_append(struct cfl_array *array, diff --git a/tests/array.c b/tests/array.c index 2709601..1fdfe3c 100644 --- a/tests/array.c +++ b/tests/array.c @@ -497,6 +497,34 @@ static void remove_by_reference() cfl_array_destroy(arr); } +static void remove_by_reference_not_found() +{ + int ret; + struct cfl_array *arr; + struct cfl_array *other; + struct cfl_variant *var; + + arr = cfl_array_create(1); + TEST_CHECK(arr != NULL); + + other = cfl_array_create(1); + TEST_CHECK(other != NULL); + + ret = cfl_array_append_string(other, "test"); + TEST_CHECK(ret == 0); + + var = cfl_array_fetch_by_index(other, 0); + TEST_CHECK(var != NULL); + + ret = cfl_array_remove_by_reference(arr, var); + TEST_CHECK(ret == -1); + + TEST_CHECK(cfl_array_fetch_by_index(other, 0) == var); + + cfl_array_destroy(other); + cfl_array_destroy(arr); +} + static void print_write_error() { #ifdef __linux__ @@ -585,6 +613,7 @@ TEST_LIST = { {"append_kvlist_rejects_cycles", append_kvlist_rejects_cycles}, {"remove_by_index", remove_by_index}, {"remove_by_reference", remove_by_reference}, + {"remove_by_reference_not_found", remove_by_reference_not_found}, {"print_write_error", print_write_error}, {"null_inputs", null_inputs}, { 0 }