瀏覽代碼

AK: Zero previous pointer *after* fixing the insertion list in HashTable

Hendiadyoin1 3 年之前
父節點
當前提交
5bf84a5b0e
共有 2 個文件被更改,包括 10 次插入1 次删除
  1. 1 1
      AK/HashTable.h
  2. 9 0
      Tests/AK/TestHashTable.cpp

+ 1 - 1
AK/HashTable.h

@@ -704,11 +704,11 @@ private:
                 bucket.previous->next = bucket.next;
             else
                 m_collection_data.head = bucket.next;
-            bucket.previous = nullptr;
             if (bucket.next)
                 bucket.next->previous = bucket.previous;
             else
                 m_collection_data.tail = bucket.previous;
+            bucket.previous = nullptr;
             bucket.next = nullptr;
         }
     }

+ 9 - 0
Tests/AK/TestHashTable.cpp

@@ -300,3 +300,12 @@ BENCHMARK_CASE(benchmark_thrashing)
         table.remove(i);
     }
 }
+
+TEST_CASE(reinsertion)
+{
+    OrderedHashTable<String> map;
+    map.set("ytidb::LAST_RESULT_ENTRY_KEY");
+    map.set("__sak");
+    map.remove("__sak");
+    map.set("__sak");
+}