Node<K,V> n = (owned) node;
if (&key != null)
key = (owned) n.key;
+ else
+ n.key = null;
if (&value != null)
value = (owned) n.value;
if (n.prev != null) {
} else {
last = n.next;
}
- node.key = null;
- node.value = null;
+ n.value = null;
node = null;
_size--;
}
return b;
}
- private inline void clear_subtree (owned Node<G> node) {
+ private inline void clear_subtree (owned Node<K,V> node) {
node.key = null;
node.value = null;
- clear_subtree ((owned) node.left);
- clear_subtree ((owned) node.right);
+ if (node.left != null)
+ clear_subtree ((owned) node.left);
+ if (node.right != null)
+ clear_subtree ((owned) node.right);
}
/**
Node<G> n = (owned)node;
if (&key != null)
key = (owned) n.key;
+ else
+ n.key = null;
if (n.prev != null) {
n.prev.next = n.next;
} else {
} else {
_last = n.prev;
}
- node.key = null;
node = null;
_size--;
}
private inline void clear_subtree (owned Node<G> node) {
node.key = null;
- clear_subtree ((owned) node.left);
- clear_subtree ((owned) node.right);
+ if (node.left != null)
+ clear_subtree ((owned) node.left);
+ if (node.right != null)
+ clear_subtree ((owned) node.right);
}
/**
public override void clear () {
if (root != null) {
clear_subtree ((owned) root);
- first = last = null;
+ _first = _last = null;
}
_size = 0;
stamp++;