reftable/stack: fix compiler warning due to missing braces

While perfectly legal, older compiler toolchains complain when zero-initializing structs that contain nested structs with `{0}`: /home/libgit2/source/deps/reftable/stack.c:862:35: error: suggest braces around initialization of subobject [-Werror,-Wmissing-braces] struct reftable_addition empty = REFTABLE_ADDITION_INIT; ^~~~~~~~~~~~~~~~~~~~~~ /home/libgit2/source/deps/reftable/stack.c:707:33: note: expanded from macro 'REFTABLE_ADDITION_INIT' #define REFTABLE_ADDITION_INIT {0} ^ We had the discussion around whether or not we want to handle such bogus compiler errors in the past already [1]. Back then we basically decided that we do not care about such old-and-buggy compilers, so while we could fix the issue by using `{{0}}` instead this is not the preferred way to handle this in the Git codebase. We have an easier fix though: we can just drop the macro altogether and handle initialization of the struct in `reftable_stack_addition_init()`. Callers are expected to call this function already, so this change even simplifies the calling convention. [1]: https://lore.kernel.org/git/20220710081135.74964-1-sunshine@sunshineco.com/T/ Suggested-by: Carlo Arenas <carenas@gmail.com> Signed-off-by: Patrick Steinhardt <ps@pks.im> Signed-off-by: Junio C Hamano <gitster@pobox.com>

Patrick Steinhardt committed Aug 12, 2025 at 11:54 UTC 6fb1d819b7c7796e7cfaae44f056d73436469efc
1 file changed +7 -7
reftable/stack.c
+7 -7
@@ -664,8 +664,6 @@ struct reftable_addition {
664 uint64_t next_update_index;
665 };
666
667 -#define REFTABLE_ADDITION_INIT {0}
668 -
667 static void reftable_addition_close(struct reftable_addition *add)
668 {
669 struct reftable_buf nm = REFTABLE_BUF_INIT;
@@ -693,6 +691,7 @@ static int reftable_stack_init_addition(struct reftable_addition *add,
691 struct reftable_buf lock_file_name = REFTABLE_BUF_INIT;
692 int err;
693
694 + memset(add, 0, sizeof(*add));
695 add->stack = st;
696
697 err = flock_acquire(&add->tables_list_lock, st->list_file,
@@ -739,8 +738,10 @@ static int stack_try_add(struct reftable_stack *st,
738 void *arg),
739 void *arg)
740 {
742 - struct reftable_addition add = REFTABLE_ADDITION_INIT;
743 - int err = reftable_stack_init_addition(&add, st, 0);
741 + struct reftable_addition add;
742 + int err;
743 +
744 + err = reftable_stack_init_addition(&add, st, 0);
745 if (err < 0)
746 goto done;
747
@@ -866,19 +867,18 @@ int reftable_stack_new_addition(struct reftable_addition **dest,
867 struct reftable_stack *st,
868 unsigned int flags)
869 {
869 - int err = 0;
870 - struct reftable_addition empty = REFTABLE_ADDITION_INIT;
870 + int err;
871
872 REFTABLE_CALLOC_ARRAY(*dest, 1);
873 if (!*dest)
874 return REFTABLE_OUT_OF_MEMORY_ERROR;
875
876 - **dest = empty;
876 err = reftable_stack_init_addition(*dest, st, flags);
877 if (err) {
878 reftable_free(*dest);
879 *dest = NULL;
880 }
881 +
882 return err;
883 }
884