reftable/stack: use `size_t` to track stack slices during compaction

We use `int`s to track reftable slices when compacting the reftable stack, which is considered to be a code smell in the Git project. Convert the code to use `size_t` instead. Signed-off-by: Patrick Steinhardt <ps@pks.im> Signed-off-by: Junio C Hamano <gitster@pobox.com>

Patrick Steinhardt committed Feb 6, 2024 at 07:35 UTC 47616c4399d958b8a9f40b1ad70071d2e3c56126
1 file changed +16 -16
reftable/stack.c
+16 -16
@@ -24,7 +24,8 @@ static int stack_try_add(struct reftable_stack *st,
24 void *arg),
25 void *arg);
26 static int stack_write_compact(struct reftable_stack *st,
27 - struct reftable_writer *wr, int first, int last,
27 + struct reftable_writer *wr,
28 + size_t first, size_t last,
29 struct reftable_log_expiry_config *config);
30 static int stack_check_addition(struct reftable_stack *st,
31 const char *new_tab_name);
@@ -820,7 +821,8 @@ uint64_t reftable_stack_next_update_index(struct reftable_stack *st)
821 return 1;
822 }
823
823 -static int stack_compact_locked(struct reftable_stack *st, int first, int last,
824 +static int stack_compact_locked(struct reftable_stack *st,
825 + size_t first, size_t last,
826 struct strbuf *temp_tab,
827 struct reftable_log_expiry_config *config)
828 {
@@ -864,22 +866,21 @@ done:
866 }
867
868 static int stack_write_compact(struct reftable_stack *st,
867 - struct reftable_writer *wr, int first, int last,
869 + struct reftable_writer *wr,
870 + size_t first, size_t last,
871 struct reftable_log_expiry_config *config)
872 {
873 int subtabs_len = last - first + 1;
874 struct reftable_table *subtabs = reftable_calloc(
875 last - first + 1, sizeof(*subtabs));
876 struct reftable_merged_table *mt = NULL;
874 - int err = 0;
877 struct reftable_iterator it = { NULL };
878 struct reftable_ref_record ref = { NULL };
879 struct reftable_log_record log = { NULL };
878 -
880 uint64_t entries = 0;
881 + int err = 0;
882
881 - int i = 0, j = 0;
882 - for (i = first, j = 0; i <= last; i++) {
883 + for (size_t i = first, j = 0; i <= last; i++) {
884 struct reftable_reader *t = st->readers[i];
885 reftable_table_from_reader(&subtabs[j++], t);
886 st->stats.bytes += t->size;
@@ -963,7 +964,8 @@ done:
964 }
965
966 /* < 0: error. 0 == OK, > 0 attempt failed; could retry. */
966 -static int stack_compact_range(struct reftable_stack *st, int first, int last,
967 +static int stack_compact_range(struct reftable_stack *st,
968 + size_t first, size_t last,
969 struct reftable_log_expiry_config *expiry)
970 {
971 char **delete_on_success = NULL, **subtable_locks = NULL, **listp = NULL;
@@ -972,12 +974,10 @@ static int stack_compact_range(struct reftable_stack *st, int first, int last,
974 struct strbuf lock_file_name = STRBUF_INIT;
975 struct strbuf ref_list_contents = STRBUF_INIT;
976 struct strbuf new_table_path = STRBUF_INIT;
977 + size_t i, j, compact_count;
978 int err = 0;
979 int have_lock = 0;
980 int lock_file_fd = -1;
978 - int compact_count;
979 - int i = 0;
980 - int j = 0;
981 int is_empty_table = 0;
982
983 if (first > last || (!expiry && first == last)) {
@@ -1172,17 +1172,17 @@ done:
1172 int reftable_stack_compact_all(struct reftable_stack *st,
1173 struct reftable_log_expiry_config *config)
1174 {
1175 - return stack_compact_range(st, 0, st->merged->stack_len - 1, config);
1175 + return stack_compact_range(st, 0, st->merged->stack_len ?
1176 + st->merged->stack_len - 1 : 0, config);
1177 }
1178
1178 -static int stack_compact_range_stats(struct reftable_stack *st, int first,
1179 - int last,
1179 +static int stack_compact_range_stats(struct reftable_stack *st,
1180 + size_t first, size_t last,
1181 struct reftable_log_expiry_config *config)
1182 {
1183 int err = stack_compact_range(st, first, last, config);
1183 - if (err > 0) {
1184 + if (err > 0)
1185 st->stats.failures++;
1185 - }
1186 return err;
1187 }
1188