fast-export: simplify initialization of anonymized hashmaps

We take pains to avoid doing a lookup on a hashmap which has not been initialized with hashmap_init(). That was necessary back when this code was written. But hashmap_get() became safer in b7879b0ba6e (hashmap: allow re-use after hashmap_free(), 2020-11-02). Since then it's OK to call functions on a zero-initialized table; it will just correctly return NULL, since there is no match. This simplifies the code a little, and also lets us keep the initialization line closer to when we add an entry (which is when the hashmap really does need to be totally initialized). That will help later refactoring. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>

Jeff King committed Mar 22, 2023 at 13:38 UTC d6484e9fab5747dd1d36fd7895e796922f4e2c76
1 file changed +4 -7
builtin/fast-export.c
+4 -7
@@ -152,18 +152,12 @@ static const char *anonymize_str(struct hashmap *map,
152 struct anonymized_entry_key key;
153 struct anonymized_entry *ret;
154
155 - if (!map->cmpfn)
156 - hashmap_init(map, anonymized_entry_cmp, NULL, 0);
157 -
155 hashmap_entry_init(&key.hash, memhash(orig, len));
156 key.orig = orig;
157 key.orig_len = len;
158
159 /* First check if it's a token the user configured manually... */
163 - if (anonymized_seeds.cmpfn)
164 - ret = hashmap_get_entry(&anonymized_seeds, &key, hash, &key);
165 - else
166 - ret = NULL;
160 + ret = hashmap_get_entry(&anonymized_seeds, &key, hash, &key);
161
162 /* ...otherwise check if we've already seen it in this context... */
163 if (!ret)
@@ -171,6 +165,9 @@ static const char *anonymize_str(struct hashmap *map,
165
166 /* ...and finally generate a new mapping if necessary */
167 if (!ret) {
168 + if (!map->cmpfn)
169 + hashmap_init(map, anonymized_entry_cmp, NULL, 0);
170 +
171 FLEX_ALLOC_MEM(ret, orig, orig, len);
172 hashmap_entry_init(&ret->hash, key.hash.hash);
173 ret->anon = generate(data);