Hi Siddarth, On Thu, 7 Jul 2022, Siddharth Asthana wrote: > diff --git a/builtin/cat-file.c b/builtin/cat-file.c > index 50cf38999d..6dc750a367 100644 > --- a/builtin/cat-file.c > +++ b/builtin/cat-file.c > @@ -36,6 +37,19 @@ struct batch_options { > > static const char *force_path; > > +static struct string_list mailmap = STRING_LIST_INIT_NODUP; > +static int use_mailmap; > + > +char *replace_idents_using_mailmap(char *object_buf, size_t *size) Here, we declare the `size` parameter as a pointer to a `size_t`. > +{ > + struct strbuf sb = STRBUF_INIT; > + strbuf_attach(&sb, object_buf, *size, *size + 1); > + const char *headers[] = { "author ", "committer ", "tagger ", NULL }; > + apply_mailmap_to_header(&sb, headers, &mailmap); > + *size = sb.len; > + return strbuf_detach(&sb, NULL); > +} > + > static int filter_object(const char *path, unsigned mode, > const struct object_id *oid, > char **buf, unsigned long *size) > @@ -152,6 +166,9 @@ static int cat_one_file(int opt, const char *exp_type, const char *obj_name, > if (!buf) > die("Cannot read object %s", obj_name); > > + if (use_mailmap) > + buf = replace_idents_using_mailmap(buf, &size); But here, we are once more bitten by Git's usage of last century's data types: the `size` variable is of type `unsigned long`. Now, you are probably developing this patch on 64-bit Linux or macOS, where it just so happens that `size_t` is idempotent to `unsigned long`. But that is not the case on 32-bit Linux nor on Windows, and therefore the build fails with this patch. I need this to get the build to pass: -- snipsnap -- >From 237c783705b30ed4bcce81aeb860dc7e152fc8bf Mon Sep 17 00:00:00 2001 From: Johannes Schindelin <johannes.schindelin@xxxxxx> Date: Fri, 8 Jul 2022 13:47:52 +0200 Subject: [PATCH] fixup??? cat-file: add mailmap support This is needed whenever `unsigned long` is different from `size_t`, e.g. on 32-bit Linux and on Windows. Signed-off-by: Johannes Schindelin <johannes.schindelin@xxxxxx> --- builtin/cat-file.c | 27 +++++++++++++++++++++------ 1 file changed, 21 insertions(+), 6 deletions(-) diff --git a/builtin/cat-file.c b/builtin/cat-file.c index ac852087a74..baa6aca53ce 100644 --- a/builtin/cat-file.c +++ b/builtin/cat-file.c @@ -185,8 +185,13 @@ static int cat_one_file(int opt, const char *exp_type, const char *obj_name, if (!buf) die("Cannot read object %s", obj_name); - if (use_mailmap) - buf = replace_idents_using_mailmap(buf, &size); + if (use_mailmap) { + size_t s; + + buf = replace_idents_using_mailmap(buf, &s); + + size = cast_size_t_to_ulong(s); + } /* otherwise just spit out the data */ break; @@ -222,8 +227,13 @@ static int cat_one_file(int opt, const char *exp_type, const char *obj_name, buf = read_object_with_reference(the_repository, &oid, exp_type_id, &size, NULL); - if (use_mailmap) - buf = replace_idents_using_mailmap(buf, &size); + if (use_mailmap) { + size_t s; + + buf = replace_idents_using_mailmap(buf, &s); + + size = cast_size_t_to_ulong(s); + } break; } default: @@ -392,8 +402,13 @@ static void print_object_or_die(struct batch_options *opt, struct expand_data *d contents = read_object_file(oid, &type, &size); - if (use_mailmap) - contents = replace_idents_using_mailmap(contents, &size); + if (use_mailmap) { + size_t s; + + contents = replace_idents_using_mailmap(contents, &s); + + size = cast_size_t_to_ulong(s); + } if (!contents) die("object %s disappeared", oid_to_hex(oid)); -- 2.37.0.windows.1