libctf: fix dynset insertion

libctf's dynsets are a straight wrapper around libiberty hashtab, storing
the key directly in the hashtab slot.  However, we'd often like to be able
to store 0 and 1 (HTAB_EMPTY_ENTRY and HTAB_DELETED_ENTRY) in there, so we
move them out of the way and replace them with huge unlikely values
instead.  Unfortunately we failed to do this replacement in one place, so
insertion of 0 or 1 ended up misinforming the hashtab machinery that an
entry was empty or deleted when it wasn't.

libctf/
	* ctf-hash.c (ctf_dynset_insert): Call key_to_internal properly.
This commit is contained in:
Nick Alcock
2024-07-15 20:50:25 +01:00
parent 6b783c3342
commit 67588c4dd6

View File

@@ -626,7 +626,7 @@ ctf_dynset_insert (ctf_dynset_t *hp, void *key)
struct htab *htab = (struct htab *) hp; struct htab *htab = (struct htab *) hp;
void **slot; void **slot;
slot = htab_find_slot (htab, key, INSERT); slot = htab_find_slot (htab, key_to_internal (key), INSERT);
if (!slot) if (!slot)
{ {