public bool remove (K key) {
Node<K,V>** node = lookup_node (key);
if (*node != null) {
+ Node<K,V> next = (owned) (*node)->next;
+
(*node)->key = null;
(*node)->value = null;
- *node = (*node)->next;
+ delete *node;
+
+ *node = (owned) next;
+
_nnodes--;
resize ();
_stamp++;
public bool remove (G key) {
Node<G>** node = lookup_node (key);
if (*node != null) {
+ Node<G> next = (owned) (*node)->next;
+
(*node)->key = null;
- *node = (*node)->next;
+ delete *node;
+
+ *node = (owned) next;
+
_nnodes--;
resize ();
_stamp++;