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); procedure TAvgLvlTree.DisposeNode(aNode: TAVLTreeNode);
begin begin
if FOwnsObjects then if FOwnsObjects and Assigned(aNode) then
begin begin
TObject(aNode.Data).Free; TObject(aNode.Data).Free;
aNode.Data := nil; aNode.Data := nil;

View File

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