]> git.ipfire.org Git - thirdparty/git.git/commitdiff
reftable/basics: adjust `common_prefix_size()` to return `size_t`
authorPatrick Steinhardt <ps@pks.im>
Mon, 20 Jan 2025 16:17:22 +0000 (17:17 +0100)
committerJunio C Hamano <gitster@pobox.com>
Tue, 21 Jan 2025 22:20:29 +0000 (14:20 -0800)
The `common_prefix_size()` function computes the length of the common
prefix between two buffers. As such its return value will always be an
unsigned integer, as the length cannot be negative. Regardless of that,
the function returns a signed integer, which is nonsensical and causes a
couple of -Wsign-compare warnings all over the place.

Adjust the function to return a `size_t` instead.

Signed-off-by: Patrick Steinhardt <ps@pks.im>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
reftable/basics.c
reftable/basics.h
reftable/record.c
reftable/writer.c
t/unit-tests/t-reftable-basics.c

index fe2b83ff83b0923a30b585af873b1deca9dbdbc6..10b234ea55f0162793617286373a8d7e8440802b 100644 (file)
@@ -263,14 +263,12 @@ int names_equal(const char **a, const char **b)
        return a[i] == b[i];
 }
 
-int common_prefix_size(struct reftable_buf *a, struct reftable_buf *b)
+size_t common_prefix_size(struct reftable_buf *a, struct reftable_buf *b)
 {
-       int p = 0;
-       for (; p < a->len && p < b->len; p++) {
+       size_t p = 0;
+       for (; p < a->len && p < b->len; p++)
                if (a->buf[p] != b->buf[p])
                        break;
-       }
-
        return p;
 }
 
index 4bf71b0954920afd4c049ea861abccf6e7c11662..9ff81a68f8e1c6188397e3e20e4ea2bfceff8e14 100644 (file)
@@ -169,7 +169,7 @@ static inline void *reftable_alloc_grow(void *p, size_t nelem, size_t elsize,
 #endif
 
 /* Find the longest shared prefix size of `a` and `b` */
-int common_prefix_size(struct reftable_buf *a, struct reftable_buf *b);
+size_t common_prefix_size(struct reftable_buf *a, struct reftable_buf *b);
 
 int hash_size(enum reftable_hash id);
 
index a55ce76aeb863b8c0e00d4c8096d60616ecb16c7..4a3e019528981d6b038cc6ccec1c73290d614cd8 100644 (file)
@@ -144,9 +144,9 @@ int reftable_encode_key(int *restart, struct string_view dest,
                        uint8_t extra)
 {
        struct string_view start = dest;
-       int prefix_len = common_prefix_size(&prev_key, &key);
+       size_t prefix_len = common_prefix_size(&prev_key, &key);
        uint64_t suffix_len = key.len - prefix_len;
-       int n = put_var_int(&dest, (uint64_t)prefix_len);
+       int n = put_var_int(&dest, prefix_len);
        if (n < 0)
                return -1;
        string_view_consume(&dest, n);
index 740c98038eaf883258bef4988f78977ac7e4a75a..91d6629486cb90508d3d7110f1e78c62c5b301fe 100644 (file)
@@ -577,7 +577,7 @@ static int writer_finish_section(struct reftable_writer *w)
 
 struct common_prefix_arg {
        struct reftable_buf *last;
-       int max;
+       size_t max;
 };
 
 static void update_common(void *void_arg, void *key)
@@ -585,10 +585,9 @@ static void update_common(void *void_arg, void *key)
        struct common_prefix_arg *arg = void_arg;
        struct obj_index_tree_node *entry = key;
        if (arg->last) {
-               int n = common_prefix_size(&entry->hash, arg->last);
-               if (n > arg->max) {
+               size_t n = common_prefix_size(&entry->hash, arg->last);
+               if (n > arg->max)
                        arg->max = n;
-               }
        }
        arg->last = &entry->hash;
 }
index 1d640b280f9f77d98b97b09021d9dba50fdb5e16..9ba7eb05ada89b92d9499c7ec5f47e96a5a35895 100644 (file)
@@ -120,7 +120,7 @@ int cmd_main(int argc UNUSED, const char *argv[] UNUSED)
                for (size_t i = 0; i < ARRAY_SIZE(cases); i++) {
                        check(!reftable_buf_addstr(&a, cases[i].a));
                        check(!reftable_buf_addstr(&b, cases[i].b));
-                       check_int(common_prefix_size(&a, &b), ==, cases[i].want);
+                       check_uint(common_prefix_size(&a, &b), ==, cases[i].want);
                        reftable_buf_reset(&a);
                        reftable_buf_reset(&b);
                }