]> git.ipfire.org Git - thirdparty/git.git/commit - hashmap.h
hashmap: allow re-use after hashmap_free()
authorElijah Newren <newren@gmail.com>
Mon, 2 Nov 2020 18:55:03 +0000 (18:55 +0000)
committerJunio C Hamano <gitster@pobox.com>
Mon, 2 Nov 2020 20:15:50 +0000 (12:15 -0800)
commitb7879b0ba6ee1306a42227f7fd7f4e5f50409184
tree32f328d974b2a59154e062edacda2158935d1fd7
parent97a39a4a930ebec9162f90ebd0412aed47d413d0
hashmap: allow re-use after hashmap_free()

Previously, once map->table had been freed, any calls to hashmap_put(),
hashmap_get(), or hashmap_remove() would cause a NULL pointer
dereference (since hashmap_free_() also zeros the memory; without that
zeroing, calling these functions would cause a use-after-free problem).

Modify these functions to check for a NULL table and automatically
allocate as needed.

Also add a HASHMAP_INIT(fn, data) macro for initializing hashmaps on the
stack without calling hashmap_init().

Signed-off-by: Elijah Newren <newren@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
hashmap.c
hashmap.h