git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH 10/17] khash: drop broken oid_map typedef

From
Jeff King <peff@peff.net>
Date
Jun 20, 2019, 07:41 UTC
Message-ID
<20190620074124.GJ3713@sigill.intra.peff.net>
In-Reply-To
<20190620073952.GA1539@sigill.intra.peff.net>

Commit 5a8643eff1 (khash: move oid hash table definition, 2019-02-19) added a khash "oid_map" type to match the existing "oid" type, which is a simple set (i.e., just keys, no values). But in setting up the khash_oid_map typedef, it accidentally referred to "kh_oid_t", which is the set type.

Nobody noticed the breakage because there are not yet any callers; the type was added just as a match to the existing sha1 types (whose map type confusingly _is_ called khash_sha1, and it has no matching set type).

We could easily fix this with s/oid/oid_map/ in the typedef. But let's take this a step further, and just drop the typedef entirely. These typedefs were added by 5a8643eff1 to match the khash_sha1 typedefs. But the actual khash-derived type names are descriptive enough; this is just adding an extra layer of indirection. The khash names do not quite follow our usual style (e.g., they end in "_t"), but since we end up using other khash names (e.g., khiter_t, kh_get_oid()) anyway, just typedef-ing the struct name is not really helping much.

And there are already many cases where we use the raw khash type names anyway (e.g., the "set" variant defined just above us does not have such a typedef!).

So let's drop this typedef, and the matching oid_pos one (which actually _does_ have a user, but we can easily convert it).

We'll leave the khash_sha1 typedef around. The ultimate fate of its callers should be conversion to kh_oid_map_t, so there's no point in going through the noise of changing the names now.

Signed-off-by: Jeff King <peff@peff.net>
---
 khash.h       | 2 --
 pack-bitmap.c | 2 +-
 2 files changed, 1 insertion(+), 3 deletions(-)
diff --git a/khash.h b/khash.h
index af747a683f..64d4eeb2bd 100644
--- a/khash.h
+++ b/khash.h
@@ -345,9 +345,7 @@ static inline int oid_equal(struct object_id a, struct object_id b)
 KHASH_INIT(oid, struct object_id, int, 0, oid_hash, oid_equal)
 
 KHASH_INIT(oid_map, struct object_id, void *, 1, oid_hash, oid_equal)
-typedef kh_oid_t khash_oid_map;
 
 KHASH_INIT(oid_pos, struct object_id, int, 1, oid_hash, oid_equal)
-typedef kh_oid_pos_t khash_oid_pos;
 
 #endif /* __AC_KHASH_H */
diff --git a/pack-bitmap.c b/pack-bitmap.c
index ff1f07e249..998133588f 100644
--- a/pack-bitmap.c
+++ b/pack-bitmap.c
@@ -365,7 +365,7 @@ struct include_data {
 static inline int bitmap_position_extended(struct bitmap_index *bitmap_git,
 					   const struct object_id *oid)
 {
-	khash_oid_pos *positions = bitmap_git->ext_index.positions;
+	kh_oid_pos_t *positions = bitmap_git->ext_index.positions;
 	khiter_t pos = kh_get_oid_pos(positions, *oid);
 
 	if (pos < kh_end(positions)) {
-- 
2.22.0.732.g5402924b4b
Previous: Jeff KingNext: Jeff King
Message 23 of 37 in “Test oidmap”
  1. 0/4 Test oidmapChristian Couder, Jun 15, 2019
  2. 1/4 t/helper: add test-oidmap.cChristian Couder, Jun 15, 2019
  3. 3/4 oidmap: use sha1hash() instead of static hash() functionChristian Couder, Jun 15, 2019
  4. 2/4 t: add t0016-oidmap.shChristian Couder, Jun 15, 2019
  5. 4/4 test-hashmap: remove 'hash' commandChristian Couder, Jun 15, 2019
  6. Jeff KingJun 19, 2019
  7. Jeff KingJun 19, 2019
  8. Christian CouderJun 19, 2019
  9. 0/17 drop non-object_id hashingJeff King, Jun 20, 2019
  10. 01/17 describe: fix accidental oid/hash type-punningJeff King, Jun 20, 2019
  11. Junio C HamanoJun 20, 2019
  12. Jeff KingJun 20, 2019
  13. 02/17 upload-pack: rename a "sha1" variable to "oid"Jeff King, Jun 20, 2019
  14. 03/17 pack-bitmap-write: convert some helpers to use object_idJeff King, Jun 20, 2019
  15. 04/17 pack-objects: convert packlist_find() to use object_idJeff King, Jun 20, 2019
  16. 05/17 pack-objects: convert locate_object_entry_hash() to object_idJeff King, Jun 20, 2019
  17. 06/17 object: convert lookup_unknown_object() to use object_idJeff King, Jun 20, 2019
  18. 07/17 object: convert lookup_object() to use object_idJeff King, Jun 20, 2019
  19. 08/17 object: convert internal hash_obj() to object_idJeff King, Jun 20, 2019
  20. 09/17 object: convert create_object() to use object_idJeff King, Jun 20, 2019
  21. Ramsay JonesJun 20, 2019
  22. Jeff KingJun 20, 2019
  23. 10/17 khash: drop broken oid_map typedefJeff King, Jun 20, 2019
  24. 11/17 khash: rename kh_oid_t to kh_oid_setJeff King, Jun 20, 2019
  25. 12/17 delta-islands: convert island_marks khash to use oidsJeff King, Jun 20, 2019
  26. Jonathan TanJun 20, 2019
  27. Jeff KingJun 20, 2019
  28. 13/17 pack-bitmap: convert khash_sha1 maps into kh_oid_mapJeff King, Jun 20, 2019
  29. 14/17 khash: drop sha1-specific map typesJeff King, Jun 20, 2019
  30. 15/17 khash: rename oid helper functionsJeff King, Jun 20, 2019
  31. Junio C HamanoJun 20, 2019
  32. Jeff KingJun 20, 2019
  33. René ScharfeJun 23, 2019
  34. Jeff KingJun 23, 2019
  35. 16/17 hash.h: move object_id definition from cache.hJeff King, Jun 20, 2019
  36. Junio C HamanoJun 20, 2019
  37. 17/17 hashmap: convert sha1hash() to oidhash()Jeff King, Jun 20, 2019

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.