summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--kernel/hashlib.h9
1 files changed, 7 insertions, 2 deletions
diff --git a/kernel/hashlib.h b/kernel/hashlib.h
index f740fc50..a31c62e5 100644
--- a/kernel/hashlib.h
+++ b/kernel/hashlib.h
@@ -1015,7 +1015,10 @@ public:
const K &find(const K &a) const
{
- return (*this)[ifind((*this)(a))];
+ int i = database.at(a, -1);
+ if (i < 0)
+ return a;
+ return (*this)[ifind(i)];
}
void merge(const K &a, const K &b)
@@ -1025,7 +1028,9 @@ public:
void promote(const K &a)
{
- ipromote((*this)(a));
+ int i = database.at(a, -1);
+ if (i >= 0)
+ ipromote(i);
}
void swap(mfp &other)