commit: widen the commit-buffer API to size_t

Continue the migration from `unsigned long` to `size_t`. The `size`
attribute of `struct commit_buffer` is fed either from
`odb_read_object()`'s return value (`size_t`, handled with
`cast_size_t_to_ulong()`) or from `strbuf.len` in
`fake_working_tree_commit()` (silently narrowed today). Widen the field
and a couple of function signatures together, drop the shim in
`repo_get_commit_buffer()`, and move the matching `unsigned long` locals
at the in-tree callers in commit.c (three sites), builtin/replace.c, and
builtin/stash.c (two sites). The remaining callers pass NULL or already
pass a size_t-compatible variable.

Assisted-by: Opus 4.7
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
This commit is contained in:
Johannes Schindelin
2026-06-05 22:12:59 +02:00
parent f3aeae983a
commit fe5e428174
4 changed files with 19 additions and 14 deletions

View File

@@ -459,7 +459,7 @@ static int create_graft(int argc, const char **argv, int force, int gentle)
struct commit *commit;
struct strbuf buf = STRBUF_INIT;
const char *buffer;
unsigned long size;
size_t size;
if (repo_get_oid(the_repository, old_ref, &old_oid) < 0)
return error(_("not a valid object name: '%s'"), old_ref);

View File

@@ -2025,7 +2025,7 @@ static int write_commit_with_parents(struct repository *r,
const char *orig_author, *orig_committer;
char *author = NULL, *committer = NULL;
const char *buffer;
unsigned long bufsize;
size_t bufsize;
const char *p;
struct strbuf msg = STRBUF_INIT;
int ret = 0;
@@ -2077,7 +2077,7 @@ static int do_import_stash(struct repository *r, const char *rev)
struct object_id chain;
int res = 0;
const char *buffer = NULL;
unsigned long bufsize;
size_t bufsize;
struct commit *this = NULL;
struct commit_list *items = NULL, *cur;
char *msg = NULL;

View File

@@ -349,7 +349,7 @@ int for_each_commit_graft(each_commit_graft_fn fn, void *cb_data)
struct commit_buffer {
void *buffer;
unsigned long size;
size_t size;
};
define_commit_slab(buffer_slab, struct commit_buffer);
@@ -366,7 +366,8 @@ void free_commit_buffer_slab(struct buffer_slab *bs)
free(bs);
}
void set_commit_buffer(struct repository *r, struct commit *commit, void *buffer, unsigned long size)
void set_commit_buffer(struct repository *r, struct commit *commit,
void *buffer, size_t size)
{
struct commit_buffer *v = buffer_slab_at(
r->parsed_objects->buffer_slab, commit);
@@ -374,7 +375,9 @@ void set_commit_buffer(struct repository *r, struct commit *commit, void *buffer
v->size = size;
}
const void *get_cached_commit_buffer(struct repository *r, const struct commit *commit, unsigned long *sizep)
const void *get_cached_commit_buffer(struct repository *r,
const struct commit *commit,
size_t *sizep)
{
struct commit_buffer *v = buffer_slab_peek(
r->parsed_objects->buffer_slab, commit);
@@ -390,7 +393,7 @@ const void *get_cached_commit_buffer(struct repository *r, const struct commit *
const void *repo_get_commit_buffer(struct repository *r,
const struct commit *commit,
unsigned long *sizep)
size_t *sizep)
{
const void *ret = get_cached_commit_buffer(r, commit, sizep);
if (!ret) {
@@ -404,7 +407,7 @@ const void *repo_get_commit_buffer(struct repository *r,
die("expected commit for %s, got %s",
oid_to_hex(&commit->object.oid), type_name(type));
if (sizep)
*sizep = cast_size_t_to_ulong(size);
*sizep = size;
}
return ret;
}
@@ -1205,7 +1208,7 @@ int parse_signed_commit(const struct commit *commit,
struct strbuf *payload, struct strbuf *signature,
const struct git_hash_algo *algop)
{
unsigned long size;
size_t size;
const char *buffer = repo_get_commit_buffer(the_repository, commit,
&size);
int ret = parse_buffer_signed_by_header(buffer, size, payload, signature, algop);
@@ -1378,7 +1381,7 @@ int verify_commit_buffer(const char *buffer, size_t size,
int check_commit_signature(const struct commit *commit, struct signature_check *sigc)
{
unsigned long size;
size_t size;
const char *buffer = repo_get_commit_buffer(the_repository, commit, &size);
int ret = verify_commit_buffer(buffer, size, sigc);
@@ -1475,7 +1478,7 @@ struct commit_extra_header *read_commit_extra_headers(struct commit *commit,
const char **exclude)
{
struct commit_extra_header *extra = NULL;
unsigned long size;
size_t size;
const char *buffer = repo_get_commit_buffer(the_repository, commit,
&size);
extra = read_commit_extra_header_lines(buffer, size, exclude);

View File

@@ -131,13 +131,15 @@ void free_commit_buffer_slab(struct buffer_slab *bs);
* Associate an object buffer with the commit. The ownership of the
* memory is handed over to the commit, and must be free()-able.
*/
void set_commit_buffer(struct repository *r, struct commit *, void *buffer, unsigned long size);
void set_commit_buffer(struct repository *r, struct commit *,
void *buffer, size_t size);
/*
* Get any cached object buffer associated with the commit. Returns NULL
* if none. The resulting memory should not be freed.
*/
const void *get_cached_commit_buffer(struct repository *, const struct commit *, unsigned long *size);
const void *get_cached_commit_buffer(struct repository *,
const struct commit *, size_t *size);
/*
* Get the commit's object contents, either from cache or by reading the object
@@ -146,7 +148,7 @@ const void *get_cached_commit_buffer(struct repository *, const struct commit *,
*/
const void *repo_get_commit_buffer(struct repository *r,
const struct commit *,
unsigned long *size);
size_t *size);
/*
* Tell the commit subsystem that we are done with a particular commit buffer.