From 0d5d65e6bb968fb4f5677c31e5610bd69078fb4c Mon Sep 17 00:00:00 2001 From: michael Date: Mon, 9 Nov 1998 10:07:24 +0000 Subject: [PATCH] + Bugfix in setcapacity, sizes were wrong --- fcl/inc/strings.inc | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/fcl/inc/strings.inc b/fcl/inc/strings.inc index 58a89f1b5d..7117c6d48c 100644 --- a/fcl/inc/strings.inc +++ b/fcl/inc/strings.inc @@ -94,7 +94,7 @@ Procedure TStrings.ReadData(Reader: TReader); begin end; -Function GetQuotedString (Var P : Pchar) : String; +Function GetQuotedString (Var P : Pchar) : AnsiString; Var P1,L : Pchar; @@ -112,7 +112,7 @@ begin P:=P+1; If P1-P>0 then begin - SetLength(Result,P1-P); + SetLength(Result,(P1-P)); L:=Pointer(Result); Move (P^,L^,P1-P); P:=P1+1; @@ -711,7 +711,8 @@ end; Procedure TStringList.SetCapacity(NewCapacity: Integer); -Var NewList,ToFree : Pointer; +Var NewList : Pointer; + MSize : Longint; begin If (NewCapacity<0) then @@ -720,23 +721,21 @@ begin begin GetMem (NewList,NewCapacity*SizeOf(TStringItem)); If NewList=Nil then - //!! Find another one here !! Error (SListCapacityError,NewCapacity); If Assigned(FList) then begin - System.Move (FList^,NewList^,FCapacity*Sizeof(Pointer)); - FillWord (Pchar(NewList)[FCapacity],(NewCapacity-FCapacity)*WordRatio, 0); - FreeMem (Flist,FCapacity*SizeOf(Pointer)); + MSize:=FCapacity*Sizeof(TStringItem); + System.Move (FList^,NewList^,MSize); + FillWord (Pchar(NewList)[MSize],(NewCapacity-FCapacity)*WordRatio, 0); + FreeMem (Flist,MSize); end; Flist:=NewList; FCapacity:=NewCapacity; end else if NewCapacity