Index: uspace/lib/cpp/include/internal/hash_table.hpp
===================================================================
--- uspace/lib/cpp/include/internal/hash_table.hpp	(revision 379ce989ddc62d045da2d6dc2c9e4ecfc4df96b1)
+++ uspace/lib/cpp/include/internal/hash_table.hpp	(revision 99bf4c479164bac2ffdac881100d356a52488455)
@@ -171,5 +171,5 @@
             do
             {
-                if (table.key_eq_(key, table.key_extractor_(current->value)))
+                if (table.keys_equal(key, current->value))
                 {
                     --table.size_;
@@ -200,5 +200,5 @@
             typename Table::iterator,
             typename Table::iterator
-        > equal_range(const Table& table, const Key& key)
+        > equal_range(Table& table, const Key& key)
         {
             auto it = table.find(key);
@@ -230,5 +230,5 @@
             do
             {
-                if (table.key_eq_(key, table.key_extractor_(current->value)))
+                if (table.keys_equal(key, current->value))
                     ++res;
 
@@ -251,5 +251,5 @@
                 do
                 {
-                    if (table.keys_equal(key, table.get_key(current->value)))
+                    if (table.keys_equal(key, current->value))
                     {
                         return make_tuple(
@@ -280,7 +280,7 @@
             while (it != table.end(it))
             {
-                if (table.keys_equal(key, table.get_key(*it)))
+                if (table.keys_equal(key, *it))
                 {
-                    while (table.keys_equal(key, table.get_key(*it)))
+                    while (table.keys_equal(key, *it))
                     {
                         auto node = it.node();
@@ -307,5 +307,5 @@
             typename Table::iterator,
             typename Table::iterator
-        > equal_range(const Table& table, const Key& key)
+        > equal_range(Table& table, const Key& key)
         {
             auto first = table.find(key);
@@ -314,9 +314,8 @@
 
             auto last = first;
-            while (table.keys_equal(key, table.get_key(*last)))
+            do
+            {
                 ++last;
-
-            // The second iterator points one behind the range.
-            ++last;
+            } while (table.keys_equal(key, *last));
 
             return make_pair(first, last);
@@ -334,9 +333,8 @@
 
             auto last = first;
-            while (table.keys_equal(key, table.get_key(*last)))
+            do
+            {
                 ++last;
-
-            // The second iterator points one behind the range.
-            ++last;
+            } while (table.keys_equal(key, *last));
 
             return make_pair(first, last);
@@ -1217,4 +1215,9 @@
             }
 
+            bool keys_equal(const key_type& key, const value_type& val) const
+            {
+                return key_eq_(key, key_extractor_(val));
+            }
+
             hash_table_bucket<value_type, size_type>* table()
             {
