mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-08-22 17:39:16 +02:00
LCL: Read a streamed WideString CollectionItem property correctly. Issue #34561, patch from Anton Kavalenka.
git-svn-id: trunk@59586 -
This commit is contained in:
parent
95d0c815b2
commit
a3b056875f
@ -374,8 +374,8 @@ type
|
|||||||
procedure HandleAlphaNum;
|
procedure HandleAlphaNum;
|
||||||
procedure HandleNumber;
|
procedure HandleNumber;
|
||||||
procedure HandleHexNumber;
|
procedure HandleHexNumber;
|
||||||
function HandleQuotedString : string;
|
function HandleQuotedString: string;
|
||||||
function HandleDecimalString(var IsWideString: Boolean): string;
|
function HandleDecimalString: string;
|
||||||
procedure HandleString;
|
procedure HandleString;
|
||||||
procedure HandleMinus;
|
procedure HandleMinus;
|
||||||
procedure HandleUnknown;
|
procedure HandleUnknown;
|
||||||
@ -5628,8 +5628,9 @@ begin
|
|||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TUTF8Parser.HandleDecimalString(var IsWideString: Boolean): string;
|
function TUTF8Parser.HandleDecimalString: string;
|
||||||
var i : integer;
|
var
|
||||||
|
i: integer;
|
||||||
begin
|
begin
|
||||||
Result:='';
|
Result:='';
|
||||||
inc(fPos);
|
inc(fPos);
|
||||||
@ -5642,13 +5643,7 @@ begin
|
|||||||
end;
|
end;
|
||||||
if not TryStrToInt(Result,i) then
|
if not TryStrToInt(Result,i) then
|
||||||
i:=0;
|
i:=0;
|
||||||
if i > 255 then begin
|
Result:=UnicodeToUTF8(i); // widestring
|
||||||
Result:=UnicodeToUTF8(i); // widestring
|
|
||||||
IsWideString:=true;
|
|
||||||
end else if i > 127 then
|
|
||||||
Result:=SysToUTF8(chr(i)) // windows codepage
|
|
||||||
else
|
|
||||||
Result:=chr(i); // ascii, does not happen
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TUTF8Parser.HandleString;
|
procedure TUTF8Parser.HandleString;
|
||||||
@ -5660,12 +5655,15 @@ begin
|
|||||||
while true do begin
|
while true do begin
|
||||||
case fBuf[fPos] of
|
case fBuf[fPos] of
|
||||||
'''' : fLastTokenStr:=fLastTokenStr+HandleQuotedString;
|
'''' : fLastTokenStr:=fLastTokenStr+HandleQuotedString;
|
||||||
'#' : fLastTokenStr:=fLastTokenStr+HandleDecimalString(IsWideString);
|
'#' : begin
|
||||||
|
fLastTokenStr:=fLastTokenStr+HandleDecimalString;
|
||||||
|
IsWideString:=true;
|
||||||
|
end;
|
||||||
else break;
|
else break;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
if IsWideString then
|
if IsWideString then
|
||||||
fToken:=toWString
|
fToken:=Classes.toWString
|
||||||
else
|
else
|
||||||
fToken:=Classes.toString;
|
fToken:=Classes.toString;
|
||||||
end;
|
end;
|
||||||
|
Loading…
Reference in New Issue
Block a user