diff options
author | Nick Alcock <nick.alcock@oracle.com> | 2024-07-15 20:50:25 +0100 |
---|---|---|
committer | Nick Alcock <nick.alcock@oracle.com> | 2024-07-31 21:02:05 +0100 |
commit | 67588c4dd687fee5164592ee2054638e53bee62f (patch) | |
tree | 3375c9bffacdb809cd833b52cc4e5284f20dd8cc /libctf | |
parent | 6b783c334290a56317325d3b8eeb7f76667916c6 (diff) | |
download | binutils-67588c4dd687fee5164592ee2054638e53bee62f.zip binutils-67588c4dd687fee5164592ee2054638e53bee62f.tar.gz binutils-67588c4dd687fee5164592ee2054638e53bee62f.tar.bz2 |
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.
Diffstat (limited to 'libctf')
-rw-r--r-- | libctf/ctf-hash.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/libctf/ctf-hash.c b/libctf/ctf-hash.c index a52f96d..7f291e3 100644 --- a/libctf/ctf-hash.c +++ b/libctf/ctf-hash.c @@ -626,7 +626,7 @@ ctf_dynset_insert (ctf_dynset_t *hp, void *key) struct htab *htab = (struct htab *) hp; void **slot; - slot = htab_find_slot (htab, key, INSERT); + slot = htab_find_slot (htab, key_to_internal (key), INSERT); if (!slot) { |