Forráskód Böngészése

AK: Expose RedBlackTree allocation failures via try_insert

This should help with using the RedBlackTree in a more OOM-safe way in
the kernel.
Idan Horowitz 4 éve
szülő
commit
e94dfb7355
1 módosított fájl, 11 hozzáadás és 2 törlés
  1. 11 2
      AK/RedBlackTree.h

+ 11 - 2
AK/RedBlackTree.h

@@ -446,10 +446,19 @@ public:
         insert(key, V(value));
     }
 
-    void insert(K key, V&& value)
+    [[nodiscard]] bool try_insert(K key, V&& value)
     {
-        auto* node = new Node(key, move(value));
+        auto* node = new (nothrow) Node(key, move(value));
+        if (!node)
+            return false;
         BaseTree::insert(node);
+        return true;
+    }
+
+    void insert(K key, V&& value)
+    {
+        auto success = try_insert(key, move(value));
+        VERIFY(success);
     }
 
     using Iterator = RedBlackTreeIterator<RedBlackTree, V>;