From ccf140f2efcf916a6e17ecb03dde1c758b75ec56 Mon Sep 17 00:00:00 2001 From: "Emil J. Tywoniak" Date: Thu, 4 Sep 2025 14:47:45 +0200 Subject: [PATCH] hashlib: don't build an unused hash for expired value in do_insert --- kernel/hashlib.h | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/kernel/hashlib.h b/kernel/hashlib.h index 9c53e6687..bef54b500 100644 --- a/kernel/hashlib.h +++ b/kernel/hashlib.h @@ -509,12 +509,11 @@ class dict { return do_lookup_internal(key, hash); } - int do_insert(const K &key, Hasher::hash_t &hash) + int do_insert(const K &key, const Hasher::hash_t &hash) { if (hashtable.empty()) { entries.emplace_back(std::pair(key, T()), -1); do_rehash(); - hash = do_hash(key); } else { entries.emplace_back(std::pair(key, T()), hashtable[hash]); hashtable[hash] = entries.size() - 1; @@ -522,12 +521,11 @@ class dict { return entries.size() - 1; } - int do_insert(const std::pair &value, Hasher::hash_t &hash) + int do_insert(const std::pair &value, const Hasher::hash_t &hash) { if (hashtable.empty()) { entries.emplace_back(value, -1); do_rehash(); - hash = do_hash(value.first); } else { entries.emplace_back(value, hashtable[hash]); hashtable[hash] = entries.size() - 1; @@ -535,13 +533,11 @@ class dict { return entries.size() - 1; } - int do_insert(std::pair &&rvalue, Hasher::hash_t &hash) + int do_insert(std::pair &&rvalue, const Hasher::hash_t &hash) { if (hashtable.empty()) { - auto key = rvalue.first; entries.emplace_back(std::forward>(rvalue), -1); do_rehash(); - hash = do_hash(key); } else { entries.emplace_back(std::forward>(rvalue), hashtable[hash]); hashtable[hash] = entries.size() - 1;