builtin/patch-id: fix type of `get_one_patchid()`

In `get_one_patchid()` we assign either the result of `strlen()` or
`remove_space()` to `len`. But while the former correctly returns a
`size_t`, the latter returns an `int` to indicate the length of the
stripped string even though it cannot ever return a negative value. This
causes a warning with "-Wsign-conversion".

In fact, even `get_one_patchid()` itself is also using an integer as
return value even though it always returns the length of the patch, and
this bubbles up to other callers.

Adapt the function and its helpers to use `size_t` for string lengths
consistently.

Signed-off-by: Patrick Steinhardt <ps@pks.im>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
maint
Patrick Steinhardt 2024-12-06 11:27:29 +01:00 committed by Junio C Hamano
parent 6411a0a896
commit efb38ad49f
1 changed files with 8 additions and 8 deletions

View File

@ -1,5 +1,4 @@
#define USE_THE_REPOSITORY_VARIABLE
#define DISABLE_SIGN_COMPARE_WARNINGS

#include "builtin.h"
#include "config.h"
@ -10,13 +9,13 @@
#include "parse-options.h"
#include "setup.h"

static void flush_current_id(int patchlen, struct object_id *id, struct object_id *result)
static void flush_current_id(size_t patchlen, struct object_id *id, struct object_id *result)
{
if (patchlen)
printf("%s %s\n", oid_to_hex(result), oid_to_hex(id));
}

static int remove_space(char *line)
static size_t remove_space(char *line)
{
char *src = line;
char *dst = line;
@ -63,10 +62,11 @@ static int scan_hunk_header(const char *p, int *p_before, int *p_after)
return 1;
}

static int get_one_patchid(struct object_id *next_oid, struct object_id *result,
struct strbuf *line_buf, int stable, int verbatim)
static size_t get_one_patchid(struct object_id *next_oid, struct object_id *result,
struct strbuf *line_buf, int stable, int verbatim)
{
int patchlen = 0, found_next = 0;
size_t patchlen = 0;
int found_next = 0;
int before = -1, after = -1;
int diff_is_binary = 0;
char pre_oid_str[GIT_MAX_HEXSZ + 1], post_oid_str[GIT_MAX_HEXSZ + 1];
@ -78,7 +78,7 @@ static int get_one_patchid(struct object_id *next_oid, struct object_id *result,
while (strbuf_getwholeline(line_buf, stdin, '\n') != EOF) {
char *line = line_buf->buf;
const char *p = line;
int len;
size_t len;

/* Possibly skip over the prefix added by "log" or "format-patch" */
if (!skip_prefix(line, "commit ", &p) &&
@ -179,7 +179,7 @@ static int get_one_patchid(struct object_id *next_oid, struct object_id *result,
static void generate_id_list(int stable, int verbatim)
{
struct object_id oid, n, result;
int patchlen;
size_t patchlen;
struct strbuf line_buf = STRBUF_INIT;

oidclr(&oid, the_repository->hash_algo);