object-file: make buf parameter of index_mem() a constant

The `buf` parameter of `index_mem()` is a non-constant string. This will
break once we enable `-Wwrite-strings` because we also pass constants
from at least one callsite.

Adapt the parameter to be a constant. As we cannot free the buffer
without casting now, this also requires us to move the lifetime of the
nested buffer around.

Signed-off-by: Patrick Steinhardt <ps@pks.im>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Patrick Steinhardt 2024-06-07 08:38:35 +02:00 committed by Junio C Hamano
parent 724b6d1e18
commit 9f03e4813a

View file

@ -2484,12 +2484,13 @@ static int hash_format_check_report(struct fsck_options *opts UNUSED,
}
static int index_mem(struct index_state *istate,
struct object_id *oid, void *buf, size_t size,
struct object_id *oid,
const void *buf, size_t size,
enum object_type type,
const char *path, unsigned flags)
{
struct strbuf nbuf = STRBUF_INIT;
int ret = 0;
int re_allocated = 0;
int write_object = flags & HASH_WRITE_OBJECT;
if (!type)
@ -2499,11 +2500,10 @@ static int index_mem(struct index_state *istate,
* Convert blobs to git internal format
*/
if ((type == OBJ_BLOB) && path) {
struct strbuf nbuf = STRBUF_INIT;
if (convert_to_git(istate, path, buf, size, &nbuf,
get_conv_flags(flags))) {
buf = strbuf_detach(&nbuf, &size);
re_allocated = 1;
buf = nbuf.buf;
size = nbuf.len;
}
}
if (flags & HASH_FORMAT_CHECK) {
@ -2520,8 +2520,8 @@ static int index_mem(struct index_state *istate,
ret = write_object_file(buf, size, type, oid);
else
hash_object_file(the_hash_algo, buf, size, type, oid);
if (re_allocated)
free(buf);
strbuf_release(&nbuf);
return ret;
}