Merge branch 'ps/no-writable-strings'
Building with "-Werror -Wwrite-strings" is now supported. * ps/no-writable-strings: (27 commits) config.mak.dev: enable `-Wwrite-strings` warning builtin/merge: always store allocated strings in `pull_twohead` builtin/rebase: always store allocated string in `options.strategy` builtin/rebase: do not assign default backend to non-constant field imap-send: fix leaking memory in `imap_server_conf` imap-send: drop global `imap_server_conf` variable mailmap: always store allocated strings in mailmap blob revision: always store allocated strings in output encoding remote-curl: avoid assigning string constant to non-const variable send-pack: always allocate receive status parse-options: cast long name for OPTION_ALIAS http: do not assign string constant to non-const field compat/win32: fix const-correctness with string constants pretty: add casts for decoration option pointers object-file: make `buf` parameter of `index_mem()` a constant object-file: mark cached object buffers as const ident: add casts for fallback name and GECOS entry: refactor how we remove items for delayed checkouts line-log: always allocate the output prefix line-log: stop assigning string constant to file parent buffer ...
This commit is contained in:
@@ -277,7 +277,7 @@ int hash_algo_by_length(int len)
|
||||
static struct cached_object {
|
||||
struct object_id oid;
|
||||
enum object_type type;
|
||||
void *buf;
|
||||
const void *buf;
|
||||
unsigned long size;
|
||||
} *cached_objects;
|
||||
static int cached_object_nr, cached_object_alloc;
|
||||
@@ -1778,6 +1778,7 @@ int pretend_object_file(void *buf, unsigned long len, enum object_type type,
|
||||
struct object_id *oid)
|
||||
{
|
||||
struct cached_object *co;
|
||||
char *co_buf;
|
||||
|
||||
hash_object_file(the_hash_algo, buf, len, type, oid);
|
||||
if (repo_has_object_file_with_flags(the_repository, oid, OBJECT_INFO_QUICK | OBJECT_INFO_SKIP_FETCH_OBJECT) ||
|
||||
@@ -1787,8 +1788,9 @@ int pretend_object_file(void *buf, unsigned long len, enum object_type type,
|
||||
co = &cached_objects[cached_object_nr++];
|
||||
co->size = len;
|
||||
co->type = type;
|
||||
co->buf = xmalloc(len);
|
||||
memcpy(co->buf, buf, len);
|
||||
co_buf = xmalloc(len);
|
||||
memcpy(co_buf, buf, len);
|
||||
co->buf = co_buf;
|
||||
oidcpy(&co->oid, oid);
|
||||
return 0;
|
||||
}
|
||||
@@ -2482,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)
|
||||
@@ -2497,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) {
|
||||
@@ -2518,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;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user