From 7f561e782575e2f5d1aa6b4b8757e7b46543d1ec Mon Sep 17 00:00:00 2001 From: Ondrej Pokorny Date: Tue, 3 May 2022 18:34:05 +0200 Subject: [PATCH] db xmldatapacketreader: don't use PChar in InitLoadRecords (cherry picked from commit b28adbad5f0e67ee1231c2db8d7618ad7130b58d) --- .../fcl-db/src/base/xmldatapacketreader.pp | 24 +++++++------------ 1 file changed, 9 insertions(+), 15 deletions(-) diff --git a/packages/fcl-db/src/base/xmldatapacketreader.pp b/packages/fcl-db/src/base/xmldatapacketreader.pp index 40ec894050..ddcd002fa6 100644 --- a/packages/fcl-db/src/base/xmldatapacketreader.pp +++ b/packages/fcl-db/src/base/xmldatapacketreader.pp @@ -306,8 +306,7 @@ end; procedure TXMLDatapacketReader.InitLoadRecords; var ChangeLogStr : String; - C, StartC : PChar; - cp : integer; + I, StartI, cp: integer; ps : string; begin @@ -320,17 +319,13 @@ begin ChangeLogStr:=''; ps := ''; cp := 0; - if ChangeLogStr='' then - Exit; - - C := PChar(ChangeLogStr); - StartC := C; - repeat - if (C^ in [' ',#0]) then + StartI := 1; + if ChangeLogStr<>'' then + for I := 1 to Length(ChangeLogStr)+1 do + begin + if (I>Length(ChangeLogStr)) or (ChangeLogStr[I] in [' ',#0]) then begin - SetLength(ps, C-StartC); - if Length(ps)>0 then - Move(StartC^, ps[1], C-StartC); + ps := Copy(ChangeLogStr, StartI, I-StartI); case (cp mod 3) of 0 : begin SetLength(FChangeLog,length(FChangeLog)+1); @@ -347,10 +342,9 @@ begin end; end; {case} inc(cp); - StartC := C+1; + StartI := I+1; end; - Inc(C); - until C^=#0; + end; end; procedure TXMLDatapacketReader.RestoreRecord;