avglvltree: fix DisposeNode for nil Node. Issue #32189

git-svn-id: trunk@55561 -
This commit is contained in:
ondrej 2017-07-23 15:10:02 +00:00
parent 818462b741
commit 11c15e3bf0
2 changed files with 5 additions and 6 deletions

View File

@ -401,7 +401,7 @@ end;
procedure TAvgLvlTree.DisposeNode(aNode: TAVLTreeNode);
begin
if FOwnsObjects then
if FOwnsObjects and Assigned(aNode) then
begin
TObject(aNode.Data).Free;
aNode.Data := nil;

View File

@ -624,16 +624,15 @@ procedure TAVLTree.Clear;
procedure DeleteNode(ANode: TAVLTreeNode);
begin
if ANode<>nil then begin
if ANode.Left<>nil then DeleteNode(ANode.Left);
if ANode.Right<>nil then DeleteNode(ANode.Right);
end;
if ANode.Left<>nil then DeleteNode(ANode.Left);
if ANode.Right<>nil then DeleteNode(ANode.Right);
DisposeNode(ANode);
end;
// Clear
begin
DeleteNode(Root);
if Root<>nil then
DeleteNode(Root);
fRoot:=nil;
FCount:=0;
end;