]> git.ipfire.org Git - thirdparty/git.git/commitdiff
hashmap_get takes "const struct hashmap_entry *"
authorEric Wong <e@80x24.org>
Sun, 6 Oct 2019 23:30:30 +0000 (23:30 +0000)
committerJunio C Hamano <gitster@pobox.com>
Mon, 7 Oct 2019 01:20:10 +0000 (10:20 +0900)
This is less error-prone than "const void *" as the compiler
now detects invalid types being passed.

Signed-off-by: Eric Wong <e@80x24.org>
Reviewed-by: Derrick Stolee <stolee@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
14 files changed:
attr.c
blame.c
builtin/difftool.c
builtin/fast-export.c
config.c
diff.c
hashmap.c
hashmap.h
merge-recursive.c
name-hash.c
patch-ids.c
revision.c
sub-process.c
submodule-config.c

diff --git a/attr.c b/attr.c
index fa26a3e3cb4db31fe86ea8ae06111ce0807dd0b8..9bdef61cc36f86647ff2a673f15effb8f81b4fe1 100644 (file)
--- a/attr.c
+++ b/attr.c
@@ -101,7 +101,7 @@ static void *attr_hashmap_get(struct attr_hashmap *map,
        hashmap_entry_init(&k.ent, memhash(key, keylen));
        k.key = key;
        k.keylen = keylen;
-       e = hashmap_get(&map->map, &k, NULL);
+       e = hashmap_get(&map->map, &k.ent, NULL);
 
        return e ? e->value : NULL;
 }
diff --git a/blame.c b/blame.c
index 4d20aee435df00c5b7cfdac7933881d0ff991886..73ffb594030608317b999861f4d872e3ac887331 100644 (file)
--- a/blame.c
+++ b/blame.c
@@ -419,7 +419,7 @@ static void get_fingerprint(struct fingerprint *result,
                        continue;
                hashmap_entry_init(&entry->entry, hash);
 
-               found_entry = hashmap_get(&result->map, entry, NULL);
+               found_entry = hashmap_get(&result->map, &entry->entry, NULL);
                if (found_entry) {
                        found_entry->count += 1;
                } else {
@@ -452,7 +452,7 @@ static int fingerprint_similarity(struct fingerprint *a, struct fingerprint *b)
        hashmap_iter_init(&b->map, &iter);
 
        while ((entry_b = hashmap_iter_next(&iter))) {
-               if ((entry_a = hashmap_get(&a->map, entry_b, NULL))) {
+               if ((entry_a = hashmap_get(&a->map, &entry_b->entry, NULL))) {
                        intersection += entry_a->count < entry_b->count ?
                                        entry_a->count : entry_b->count;
                }
@@ -471,7 +471,7 @@ static void fingerprint_subtract(struct fingerprint *a, struct fingerprint *b)
        hashmap_iter_init(&b->map, &iter);
 
        while ((entry_b = hashmap_iter_next(&iter))) {
-               if ((entry_a = hashmap_get(&a->map, entry_b, NULL))) {
+               if ((entry_a = hashmap_get(&a->map, &entry_b->entry, NULL))) {
                        if (entry_a->count <= entry_b->count)
                                hashmap_remove(&a->map, entry_b, NULL);
                        else
index 82c146718da69af40f20291726f6d7ed24b10d8e..f41298d199aade9b63e9737a440a52be9d486a4a 100644 (file)
@@ -162,7 +162,7 @@ static void add_left_or_right(struct hashmap *map, const char *path,
 
        FLEX_ALLOC_STR(e, path, path);
        hashmap_entry_init(&e->entry, strhash(path));
-       existing = hashmap_get(map, e, NULL);
+       existing = hashmap_get(map, &e->entry, NULL);
        if (existing) {
                free(e);
                e = existing;
@@ -462,7 +462,8 @@ static int run_dir_diff(const char *extcmd, int symlinks, const char *prefix,
                        /* Avoid duplicate working_tree entries */
                        FLEX_ALLOC_STR(entry, path, dst_path);
                        hashmap_entry_init(&entry->entry, strhash(dst_path));
-                       if (hashmap_get(&working_tree_dups, entry, NULL)) {
+                       if (hashmap_get(&working_tree_dups, &entry->entry,
+                                       NULL)) {
                                free(entry);
                                continue;
                        }
index 287dbd24a30ff02cfcb1f624a4bebca54b9d4a29..c693cf6a8c95f9b9592696a8ef6be8a9b55354cf 100644 (file)
@@ -151,7 +151,7 @@ static const void *anonymize_mem(struct hashmap *map,
        hashmap_entry_init(&key.hash, memhash(orig, *len));
        key.orig = orig;
        key.orig_len = *len;
-       ret = hashmap_get(map, &key, NULL);
+       ret = hashmap_get(map, &key.hash, NULL);
 
        if (!ret) {
                ret = xmalloc(sizeof(*ret));
index 2243d7c3d63effe41ccb942850c391f14871402e..1a1b6675fd22b17ba71bb399b147bfd05a05869c 100644 (file)
--- a/config.c
+++ b/config.c
@@ -1863,7 +1863,7 @@ static struct config_set_element *configset_find_element(struct config_set *cs,
 
        hashmap_entry_init(&k.ent, strhash(normalized_key));
        k.key = normalized_key;
-       found_entry = hashmap_get(&cs->config_hash, &k, NULL);
+       found_entry = hashmap_get(&cs->config_hash, &k.ent, NULL);
        free(normalized_key);
        return found_entry;
 }
diff --git a/diff.c b/diff.c
index cc7f06d10d1b4e9e07abb895412c99349a16b027..72d3c6aa1907e008a5a35f86736d0afa02a76559 100644 (file)
--- a/diff.c
+++ b/diff.c
@@ -1144,13 +1144,13 @@ static void mark_color_as_moved(struct diff_options *o,
                case DIFF_SYMBOL_PLUS:
                        hm = del_lines;
                        key = prepare_entry(o, n);
-                       match = hashmap_get(hm, key, NULL);
+                       match = hashmap_get(hm, &key->ent, NULL);
                        free(key);
                        break;
                case DIFF_SYMBOL_MINUS:
                        hm = add_lines;
                        key = prepare_entry(o, n);
-                       match = hashmap_get(hm, key, NULL);
+                       match = hashmap_get(hm, &key->ent, NULL);
                        free(key);
                        break;
                default:
index 9c2db3e0c848d41fce59e8f3d5ccc4b53fe895a1..092236c09aac0155b7b317afe4d2c47e9628cf37 100644 (file)
--- a/hashmap.c
+++ b/hashmap.c
@@ -186,7 +186,8 @@ void hashmap_free(struct hashmap *map, int free_entries)
        memset(map, 0, sizeof(*map));
 }
 
-void *hashmap_get(const struct hashmap *map, const void *key, const void *keydata)
+void *hashmap_get(const struct hashmap *map, const struct hashmap_entry *key,
+               const void *keydata)
 {
        return *find_entry_ptr(map, key, keydata);
 }
@@ -296,7 +297,7 @@ const void *memintern(const void *data, size_t len)
        /* lookup interned string in pool */
        hashmap_entry_init(&key.ent, memhash(data, len));
        key.len = len;
-       e = hashmap_get(&map, &key, data);
+       e = hashmap_get(&map, &key.ent, data);
        if (!e) {
                /* not found: create it */
                FLEX_ALLOC_MEM(e, data, data, len);
index 47ee5c00d7b69af08732c8d2708fca9b54f5ee8e..ef83f9431d64fd249adc88b5d054a9ea2d9a0953 100644 (file)
--- a/hashmap.h
+++ b/hashmap.h
@@ -74,7 +74,8 @@
  *             e->key = key;
  *
  *             flags |= COMPARE_VALUE;
- *             printf("%sfound\n", hashmap_get(&map, e, NULL) ? "" : "not ");
+ *             printf("%sfound\n",
+ *                    hashmap_get(&map, &e->ent, NULL) ? "" : "not ");
  *             free(e);
  *         }
  *
@@ -84,7 +85,8 @@
  *             k.key = key;
  *
  *             flags |= COMPARE_VALUE;
- *             printf("%sfound\n", hashmap_get(&map, &k, value) ? "" : "not ");
+ *             printf("%sfound\n",
+ *                    hashmap_get(&map, &k->ent, value) ? "" : "not ");
  *         }
  *
  *         if (!strcmp("end", action)) {
@@ -286,7 +288,7 @@ static inline unsigned int hashmap_get_size(struct hashmap *map)
  * If an entry with matching hash code is found, `key` and `keydata` are passed
  * to `hashmap_cmp_fn` to decide whether the entry matches the key.
  */
-void *hashmap_get(const struct hashmap *map, const void *key,
+void *hashmap_get(const struct hashmap *map, const struct hashmap_entry *key,
                         const void *keydata);
 
 /*
index db9b247ecefb8eff2d8066e6a7a97717b66249e4..2d31a3e279b789b225385c591658222d3521ce0a 100644 (file)
@@ -63,7 +63,7 @@ static struct dir_rename_entry *dir_rename_find_entry(struct hashmap *hashmap,
                return NULL;
        hashmap_entry_init(&key.ent, strhash(dir));
        key.dir = dir;
-       return hashmap_get(hashmap, &key, NULL);
+       return hashmap_get(hashmap, &key.ent, NULL);
 }
 
 static int dir_rename_cmp(const void *unused_cmp_data,
@@ -99,7 +99,7 @@ static struct collision_entry *collision_find_entry(struct hashmap *hashmap,
 
        hashmap_entry_init(&key.ent, strhash(target_file));
        key.target_file = target_file;
-       return hashmap_get(hashmap, &key, NULL);
+       return hashmap_get(hashmap, &key.ent, NULL);
 }
 
 static int collision_cmp(void *unused_cmp_data,
index faec682bc7e0523f644558b920dc68ed7829784b..4eaeded7759a69932e64a555dea713773e47252b 100644 (file)
@@ -35,7 +35,7 @@ static struct dir_entry *find_dir_entry__hash(struct index_state *istate,
        struct dir_entry key;
        hashmap_entry_init(&key.ent, hash);
        key.namelen = namelen;
-       return hashmap_get(&istate->dir_hash, &key, name);
+       return hashmap_get(&istate->dir_hash, &key.ent, name);
 }
 
 static struct dir_entry *find_dir_entry(struct index_state *istate,
index f87b62bf58ba0094b45bb8f9d1fbc81dc6739d2b..437f29e42c7f7ba794849f35fe728e9e58a283ef 100644 (file)
@@ -99,7 +99,7 @@ struct patch_id *has_commit_patch_id(struct commit *commit,
        if (init_patch_id_entry(&patch, commit, ids))
                return NULL;
 
-       return hashmap_get(&ids->patches, &patch, NULL);
+       return hashmap_get(&ids->patches, &patch.ent, NULL);
 }
 
 struct patch_id *add_commit_patch_id(struct commit *commit,
index 3461c7888387f1ed0c578da0a1cea32cc4c3d9d3..4336281286476074a479b9a601cfab783435245d 100644 (file)
@@ -147,7 +147,8 @@ static void paths_and_oids_insert(struct hashmap *map,
        key.path = (char *)path;
        oidset_init(&key.trees, 0);
 
-       if (!(entry = (struct path_and_oids_entry *)hashmap_get(map, &key, NULL))) {
+       entry = hashmap_get(map, &key.ent, NULL);
+       if (!entry) {
                entry = xcalloc(1, sizeof(struct path_and_oids_entry));
                hashmap_entry_init(&entry->ent, hash);
                entry->path = xstrdup(key.path);
index d58e069855703afc7ea3e8cd69bfbd7c7ed088f0..debd86bb689f4b68d86d9024dd27e8a315d0c09b 100644 (file)
@@ -22,7 +22,7 @@ struct subprocess_entry *subprocess_find_entry(struct hashmap *hashmap, const ch
 
        hashmap_entry_init(&key.ent, strhash(cmd));
        key.cmd = cmd;
-       return hashmap_get(hashmap, &key, NULL);
+       return hashmap_get(hashmap, &key.ent, NULL);
 }
 
 int subprocess_read_status(int fd, struct strbuf *status)
index a3bbd9fd6f9e180eaec16e3df227ea13b3c21eeb..58d585cd7d9cd5482f4134a08e0e146c4d4ec19b 100644 (file)
@@ -166,7 +166,7 @@ static const struct submodule *cache_lookup_path(struct submodule_cache *cache,
        hashmap_entry_init(&key.ent, hash);
        key.config = &key_config;
 
-       entry = hashmap_get(&cache->for_path, &key, NULL);
+       entry = hashmap_get(&cache->for_path, &key.ent, NULL);
        if (entry)
                return entry->config;
        return NULL;
@@ -186,7 +186,7 @@ static struct submodule *cache_lookup_name(struct submodule_cache *cache,
        hashmap_entry_init(&key.ent, hash);
        key.config = &key_config;
 
-       entry = hashmap_get(&cache->for_name, &key, NULL);
+       entry = hashmap_get(&cache->for_name, &key.ent, NULL);
        if (entry)
                return entry->config;
        return NULL;