hash = isc_hash_function(&ptr, sizeof(ptr), ISC_TRUE, NULL);
idx = hash % DEBUG_TABLE_COUNT;
- dl = ISC_LIST_TAIL(mctx->debuglist[idx]);
- if (ISC_LIKELY(dl != NULL && dl->ptr == NULL)) {
- ISC_LIST_UNLINK(mctx->debuglist[idx], dl, link);
- dl->ptr = ptr;
- dl->size = size;
- dl->file = file;
- dl->line = line;
- ISC_LIST_PREPEND(mctx->debuglist[idx], dl, link);
- return;
- }
-
dl = malloc(sizeof(debuglink_t));
INSIST(dl != NULL);
mctx->malloced += sizeof(debuglink_t);
idx = hash % DEBUG_TABLE_COUNT;
dl = ISC_LIST_HEAD(mctx->debuglist[idx]);
- while (ISC_LIKELY(dl != NULL && dl->ptr != NULL)) {
+ while (ISC_LIKELY(dl != NULL)) {
if (ISC_UNLIKELY(dl->ptr == ptr)) {
ISC_LIST_UNLINK(mctx->debuglist[idx], dl, link);
- dl->ptr = NULL;
- dl->size = 0;
- dl->file = NULL;
- dl->line = 0;
- ISC_LIST_APPEND(mctx->debuglist[idx], dl, link);
+ mctx->malloced -= sizeof(*dl);
+ free(dl);
return;
}
dl = ISC_LIST_NEXT(dl, link);