builtin/log: fix remaining -Wsign-compare warnings

Fix remaining -Wsign-compare warnings in "builtin/log.c" and mark the
file as -Wsign-compare-clean. While most of the fixes are obvious, one
fix requires us to use `cast_size_t_to_int()`, which will cause us to
die in case the `size_t` cannot be represented as `int`. This should be
fine though, as the data would typically be set either via a config key
or via the command line, neither of which should ever exceed a couple of
kilobytes of data.

Signed-off-by: Patrick Steinhardt <ps@pks.im>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
maint
Patrick Steinhardt 2024-12-27 11:46:27 +01:00 committed by Junio C Hamano
parent 0905ed201a
commit 1ab5948141
1 changed files with 13 additions and 14 deletions

View File

@ -6,7 +6,6 @@
*/ */


#define USE_THE_REPOSITORY_VARIABLE #define USE_THE_REPOSITORY_VARIABLE
#define DISABLE_SIGN_COMPARE_WARNINGS


#include "builtin.h" #include "builtin.h"
#include "abspath.h" #include "abspath.h"
@ -209,7 +208,6 @@ static void cmd_log_init_defaults(struct rev_info *rev,


static void set_default_decoration_filter(struct decoration_filter *decoration_filter) static void set_default_decoration_filter(struct decoration_filter *decoration_filter)
{ {
int i;
char *value = NULL; char *value = NULL;
struct string_list *include = decoration_filter->include_ref_pattern; struct string_list *include = decoration_filter->include_ref_pattern;
const struct string_list *config_exclude; const struct string_list *config_exclude;
@ -243,7 +241,7 @@ static void set_default_decoration_filter(struct decoration_filter *decoration_f
* No command-line or config options were given, so * No command-line or config options were given, so
* populate with sensible defaults. * populate with sensible defaults.
*/ */
for (i = 0; i < ARRAY_SIZE(ref_namespace); i++) { for (size_t i = 0; i < ARRAY_SIZE(ref_namespace); i++) {
if (!ref_namespace[i].decoration) if (!ref_namespace[i].decoration)
continue; continue;


@ -717,14 +715,14 @@ static int show_tag_object(const struct object_id *oid, struct rev_info *rev)
unsigned long size; unsigned long size;
enum object_type type; enum object_type type;
char *buf = repo_read_object_file(the_repository, oid, &type, &size); char *buf = repo_read_object_file(the_repository, oid, &type, &size);
int offset = 0; unsigned long offset = 0;


if (!buf) if (!buf)
return error(_("could not read object %s"), oid_to_hex(oid)); return error(_("could not read object %s"), oid_to_hex(oid));


assert(type == OBJ_TAG); assert(type == OBJ_TAG);
while (offset < size && buf[offset] != '\n') { while (offset < size && buf[offset] != '\n') {
int new_offset = offset + 1; unsigned long new_offset = offset + 1;
const char *ident; const char *ident;
while (new_offset < size && buf[new_offset++] != '\n') while (new_offset < size && buf[new_offset++] != '\n')
; /* do nothing */ ; /* do nothing */
@ -1316,24 +1314,25 @@ static void print_signature(const char *signature, FILE *file)


static char *find_branch_name(struct rev_info *rev) static char *find_branch_name(struct rev_info *rev)
{ {
int i, positive = -1;
struct object_id branch_oid; struct object_id branch_oid;
const struct object_id *tip_oid; const struct object_id *tip_oid;
const char *ref, *v; const char *ref, *v;
char *full_ref, *branch = NULL; char *full_ref, *branch = NULL;
int interesting_found = 0;
size_t idx;


for (i = 0; i < rev->cmdline.nr; i++) { for (size_t i = 0; i < rev->cmdline.nr; i++) {
if (rev->cmdline.rev[i].flags & UNINTERESTING) if (rev->cmdline.rev[i].flags & UNINTERESTING)
continue; continue;
if (positive < 0) if (interesting_found)
positive = i;
else
return NULL; return NULL;
interesting_found = 1;
idx = i;
} }
if (positive < 0) if (!interesting_found)
return NULL; return NULL;
ref = rev->cmdline.rev[positive].name; ref = rev->cmdline.rev[idx].name;
tip_oid = &rev->cmdline.rev[positive].item->oid; tip_oid = &rev->cmdline.rev[idx].item->oid;
if (repo_dwim_ref(the_repository, ref, strlen(ref), &branch_oid, if (repo_dwim_ref(the_repository, ref, strlen(ref), &branch_oid,
&full_ref, 0) && &full_ref, 0) &&
skip_prefix(full_ref, "refs/heads/", &v) && skip_prefix(full_ref, "refs/heads/", &v) &&
@ -2183,7 +2182,7 @@ int cmd_format_patch(int argc,
fmt_patch_suffix = cfg.fmt_patch_suffix; fmt_patch_suffix = cfg.fmt_patch_suffix;


/* Make sure "0000-$sub.patch" gives non-negative length for $sub */ /* Make sure "0000-$sub.patch" gives non-negative length for $sub */
if (cfg.log.fmt_patch_name_max <= strlen("0000-") + strlen(fmt_patch_suffix)) if (cfg.log.fmt_patch_name_max <= cast_size_t_to_int(strlen("0000-") + strlen(fmt_patch_suffix)))
cfg.log.fmt_patch_name_max = strlen("0000-") + strlen(fmt_patch_suffix); cfg.log.fmt_patch_name_max = strlen("0000-") + strlen(fmt_patch_suffix);


if (cover_from_description_arg) if (cover_from_description_arg)