Eric Wong <e@xxxxxxxxx> writes: > In the future, list iterator macros (e.g. list_for_each_entry) > may also be implemented using OFFSETOF_VAR to save hackers the > trouble of using container_of/list_entry macros and without > relying on non-portable `__typeof__'. Can we add something like this as a preliminary preparation step before the series? Subject: [PATCH] treewide: initialize pointers to hashmap entries There are not strictly necessary, but some compilers (e.g. clang 6.0.1) apparently have trouble in construct we will use in the OFFSETOF_VAR() macro, i.e. ((uintptr_t)&(ptr)->member - (uintptr_t)(ptr)) when the ptr is uninitialized. Signed-off-by: Junio C Hamano <gitster@xxxxxxxxx> --- attr.c | 2 +- blame.c | 4 ++-- builtin/describe.c | 2 +- builtin/difftool.c | 2 +- config.c | 2 +- merge-recursive.c | 6 +++--- revision.c | 4 ++-- submodule-config.c | 2 +- t/helper/test-hashmap.c | 2 +- t/helper/test-lazy-init-name-hash.c | 4 ++-- 10 files changed, 15 insertions(+), 15 deletions(-) diff --git a/attr.c b/attr.c index 15f0efdf60..0c367fb84a 100644 --- a/attr.c +++ b/attr.c @@ -161,7 +161,7 @@ static void all_attrs_init(struct attr_hashmap *map, struct attr_check *check) * field and fill each entry with its corresponding git_attr. */ if (size != check->all_attrs_nr) { - struct attr_hash_entry *e; + struct attr_hash_entry *e = NULL; struct hashmap_iter iter; REALLOC_ARRAY(check->all_attrs, size); diff --git a/blame.c b/blame.c index 6384f48133..a5f8672419 100644 --- a/blame.c +++ b/blame.c @@ -448,7 +448,7 @@ static int fingerprint_similarity(struct fingerprint *a, struct fingerprint *b) { int intersection = 0; struct hashmap_iter iter; - const struct fingerprint_entry *entry_a, *entry_b; + const struct fingerprint_entry *entry_a, *entry_b = NULL; hashmap_for_each_entry(&b->map, &iter, entry_b, entry /* member name */) { @@ -467,7 +467,7 @@ static void fingerprint_subtract(struct fingerprint *a, struct fingerprint *b) { struct hashmap_iter iter; struct fingerprint_entry *entry_a; - const struct fingerprint_entry *entry_b; + const struct fingerprint_entry *entry_b = NULL; hashmap_iter_init(&b->map, &iter); diff --git a/builtin/describe.c b/builtin/describe.c index 1caf98f716..42e6cc3a4f 100644 --- a/builtin/describe.c +++ b/builtin/describe.c @@ -330,7 +330,7 @@ static void describe_commit(struct object_id *oid, struct strbuf *dst) if (!have_util) { struct hashmap_iter iter; struct commit *c; - struct commit_name *n; + struct commit_name *n = NULL; init_commit_names(&commit_names); hashmap_for_each_entry(&names, &iter, n, diff --git a/builtin/difftool.c b/builtin/difftool.c index c280e682b2..30f3bd6219 100644 --- a/builtin/difftool.c +++ b/builtin/difftool.c @@ -344,7 +344,7 @@ static int run_dir_diff(const char *extcmd, int symlinks, const char *prefix, FILE *fp; struct hashmap working_tree_dups, submodules, symlinks2; struct hashmap_iter iter; - struct pair_entry *entry; + struct pair_entry *entry = NULL; struct index_state wtindex; struct checkout lstate, rstate; int rc, flags = RUN_GIT_CMD, err = 0; diff --git a/config.c b/config.c index a4fa464ed2..6ceefb7cff 100644 --- a/config.c +++ b/config.c @@ -1936,7 +1936,7 @@ void git_configset_init(struct config_set *cs) void git_configset_clear(struct config_set *cs) { - struct config_set_element *entry; + struct config_set_element *entry = NULL; struct hashmap_iter iter; if (!cs->hash_initialized) return; diff --git a/merge-recursive.c b/merge-recursive.c index 8787a40b0c..bc826fb7ac 100644 --- a/merge-recursive.c +++ b/merge-recursive.c @@ -2127,7 +2127,7 @@ static void handle_directory_level_conflicts(struct merge_options *opt, struct tree *merge) { struct hashmap_iter iter; - struct dir_rename_entry *head_ent; + struct dir_rename_entry *head_ent = NULL; struct dir_rename_entry *merge_ent; struct string_list remove_from_head = STRING_LIST_INIT_NODUP; @@ -2566,7 +2566,7 @@ static struct string_list *get_renames(struct merge_options *opt, int i; struct hashmap collisions; struct hashmap_iter iter; - struct collision_entry *e; + struct collision_entry *e = NULL; struct string_list *renames; compute_collisions(&collisions, dir_renames, pairs); @@ -2838,7 +2838,7 @@ static void initial_cleanup_rename(struct diff_queue_struct *pairs, struct hashmap *dir_renames) { struct hashmap_iter iter; - struct dir_rename_entry *e; + struct dir_rename_entry *e = NULL; hashmap_for_each_entry(dir_renames, &iter, e, ent /* member name */) { diff --git a/revision.c b/revision.c index 6688f89d0d..70f478666b 100644 --- a/revision.c +++ b/revision.c @@ -127,7 +127,7 @@ static void paths_and_oids_init(struct hashmap *map) static void paths_and_oids_clear(struct hashmap *map) { struct hashmap_iter iter; - struct path_and_oids_entry *entry; + struct path_and_oids_entry *entry = NULL; hashmap_for_each_entry(map, &iter, entry, ent /* member name */) { oidset_clear(&entry->trees); @@ -210,7 +210,7 @@ void mark_trees_uninteresting_sparse(struct repository *r, unsigned has_interesting = 0, has_uninteresting = 0; struct hashmap map; struct hashmap_iter map_iter; - struct path_and_oids_entry *entry; + struct path_and_oids_entry *entry = NULL; struct object_id *oid; struct oidset_iter iter; diff --git a/submodule-config.c b/submodule-config.c index 401a9b2382..4d4d3b7dd7 100644 --- a/submodule-config.c +++ b/submodule-config.c @@ -89,7 +89,7 @@ static void free_one_config(struct submodule_entry *entry) static void submodule_cache_clear(struct submodule_cache *cache) { struct hashmap_iter iter; - struct submodule_entry *entry; + struct submodule_entry *entry = NULL; if (!cache->initialized) return; diff --git a/t/helper/test-hashmap.c b/t/helper/test-hashmap.c index cc577c8956..a3bed8cc70 100644 --- a/t/helper/test-hashmap.c +++ b/t/helper/test-hashmap.c @@ -161,7 +161,7 @@ int cmd__hashmap(int argc, const char **argv) while (strbuf_getline(&line, stdin) != EOF) { char *cmd, *p1 = NULL, *p2 = NULL; unsigned int hash = 0; - struct test_entry *entry; + struct test_entry *entry = NULL; /* break line into command and up to two parameters */ cmd = strtok(line.buf, DELIM); diff --git a/t/helper/test-lazy-init-name-hash.c b/t/helper/test-lazy-init-name-hash.c index cd1b4c9736..2cb1fa3d8c 100644 --- a/t/helper/test-lazy-init-name-hash.c +++ b/t/helper/test-lazy-init-name-hash.c @@ -29,8 +29,8 @@ static void dump_run(void) char name[FLEX_ARRAY]; }; - struct dir_entry *dir; - struct cache_entry *ce; + struct dir_entry *dir = NULL; + struct cache_entry *ce = NULL; read_cache(); if (single) { -- 2.23.0-680-gad10c89764