@@ -1146,9 +1146,17 @@ procedure TAVLTree.FreeAndClear;
end;
// TAVLTree.FreeAndClear
+var
+ r: TAVLTreeNode;
begin
// free all data
- FreeNodeData(Root);
+ r := Root;
+ FRoot := nil; // Prevent any being-destroyed object from removing its node.
+ try
+ FreeNodeData(r);
+ finally
+ FRoot := r;
+ end;
// free all nodes
Clear;