From d9c91a966304af2dbe440a845f1a7af1e10f7674 Mon Sep 17 00:00:00 2001 From: micha Date: Sat, 2 Dec 2006 08:03:21 +0000 Subject: [PATCH] fix TFPList.QuickSort duplicate in compiler cclasses (rtl is also broken) git-svn-id: trunk@5525 - --- compiler/cclasses.pas | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/compiler/cclasses.pas b/compiler/cclasses.pas index b0c3bec9a4..49240f299c 100644 --- a/compiler/cclasses.pas +++ b/compiler/cclasses.pas @@ -745,23 +745,28 @@ end; Procedure QuickSort(FList: PPointerList; L, R : Longint;Compare: TListSortCompare); var - I, J : Longint; - P, Q : Pointer; + I, J, P: Longint; + PItem, Q : Pointer; begin repeat I := L; J := R; - P := FList^[ (L + R) div 2 ]; + P := (L + R) div 2; repeat - while Compare(P, FList^[i]) > 0 do + PItem := FList^[P]; + while Compare(PItem, FList^[i]) > 0 do I := I + 1; - while Compare(P, FList^[J]) < 0 do + while Compare(PItem, FList^[J]) < 0 do J := J - 1; If I <= J then begin Q := FList^[I]; Flist^[I] := FList^[J]; FList^[J] := Q; + if P = I then + P := J + else if P = J then + P := I; I := I + 1; J := J - 1; end;