From 30aefa3503096c18909ba5e1b88adb199f64d477 Mon Sep 17 00:00:00 2001 From: mattias Date: Sun, 2 Sep 2012 15:57:47 +0000 Subject: [PATCH] avglvltree: setcompare: set when count=0 git-svn-id: trunk@38486 - --- components/lazutils/avglvltree.pas | 47 ++++++++++++++++-------------- 1 file changed, 25 insertions(+), 22 deletions(-) diff --git a/components/lazutils/avglvltree.pas b/components/lazutils/avglvltree.pas index aacdba9518..33d4610bd7 100644 --- a/components/lazutils/avglvltree.pas +++ b/components/lazutils/avglvltree.pas @@ -1577,30 +1577,33 @@ var List: PPointer; i, OldCount: integer; begin if (FOnCompare=NewCompare) and (FOnObjectCompare=NewObjectCompare) then exit; + if Count<1 then begin + FOnCompare:=NewCompare; + FOnObjectCompare:=NewObjectCompare; + exit; + end; // sort the tree again - if Count>0 then begin - OldCount:=Count; - GetMem(List,SizeOf(Pointer)*OldCount); - try - // save the data in a list - ANode:=FindLowest; - i:=0; - while ANode<>nil do begin - List[i]:=ANode.Data; - inc(i); - ANode:=ANode.Successor; - end; - // clear the tree - Clear; - // set the new compare function - FOnCompare:=NewCompare; - FOnObjectCompare:=NewObjectCompare; - // re-add all nodes - for i:=0 to OldCount-1 do - Add(List[i]); - finally - FreeMem(List); + OldCount:=Count; + GetMem(List,SizeOf(Pointer)*OldCount); + try + // save the data in a list + ANode:=FindLowest; + i:=0; + while ANode<>nil do begin + List[i]:=ANode.Data; + inc(i); + ANode:=ANode.Successor; end; + // clear the tree + Clear; + // set the new compare function + FOnCompare:=NewCompare; + FOnObjectCompare:=NewObjectCompare; + // re-add all nodes + for i:=0 to OldCount-1 do + Add(List[i]); + finally + FreeMem(List); end; end;