From: Nick Alcock Date: Mon, 15 Jul 2024 19:50:25 +0000 (+0100) Subject: libctf: fix dynset insertion X-Git-Tag: gdb-16-branchpoint~1268 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=67588c4dd687fee5164592ee2054638e53bee62f;p=thirdparty%2Fbinutils-gdb.git 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. --- diff --git a/libctf/ctf-hash.c b/libctf/ctf-hash.c index a52f96db105..7f291e3ac27 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) {