mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-10-24 06:47:02 +02:00
parent
e884127108
commit
bdff370210
@ -1944,6 +1944,22 @@ var
|
|||||||
NewChar, OldChar: Word;
|
NewChar, OldChar: Word;
|
||||||
// Language identification
|
// Language identification
|
||||||
IsTurkish: Boolean;
|
IsTurkish: Boolean;
|
||||||
|
|
||||||
|
procedure CorrectOutStrSize(AOldCharSize, ANewCharSize: Integer);
|
||||||
|
begin
|
||||||
|
if not (ANewCharSize > AOldCharSize) then Exit; // no correction needed
|
||||||
|
if (ANewCharSize > 20) or (AOldCharSize > 20) then Exit; // sanity check
|
||||||
|
// Fix for bug 23428
|
||||||
|
// If the string wasn't decreased by previous char changes,
|
||||||
|
// and our current operation will make it bigger, then for safety
|
||||||
|
// increase the buffer
|
||||||
|
if (ANewCharSize > AOldCharSize) and (OutCounter >= InCounter-1) then
|
||||||
|
begin
|
||||||
|
SetLength(Result, Length(Result)+ANewCharSize-AOldCharSize);
|
||||||
|
OutStr := PChar(Result);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
begin
|
begin
|
||||||
// Start with the same string, and progressively modify
|
// Start with the same string, and progressively modify
|
||||||
Result:=AInStr;
|
Result:=AInStr;
|
||||||
@ -2066,6 +2082,7 @@ begin
|
|||||||
$C8BC: NewChar := $C8BB;
|
$C8BC: NewChar := $C8BB;
|
||||||
$C8BF:
|
$C8BF:
|
||||||
begin
|
begin
|
||||||
|
CorrectOutStrSize(2, 3);
|
||||||
OutStr[OutCounter] := #$E2;
|
OutStr[OutCounter] := #$E2;
|
||||||
OutStr[OutCounter+1]:= #$B1;
|
OutStr[OutCounter+1]:= #$B1;
|
||||||
OutStr[OutCounter+2]:= #$BE;
|
OutStr[OutCounter+2]:= #$BE;
|
||||||
@ -2075,6 +2092,7 @@ begin
|
|||||||
// 0240 = C9 80
|
// 0240 = C9 80
|
||||||
$C980:
|
$C980:
|
||||||
begin
|
begin
|
||||||
|
CorrectOutStrSize(2, 3);
|
||||||
OutStr[OutCounter] := #$E2;
|
OutStr[OutCounter] := #$E2;
|
||||||
OutStr[OutCounter+1]:= #$B1;
|
OutStr[OutCounter+1]:= #$B1;
|
||||||
OutStr[OutCounter+2]:= #$BF;
|
OutStr[OutCounter+2]:= #$BF;
|
||||||
@ -2086,6 +2104,7 @@ begin
|
|||||||
// 0250 = C9 90
|
// 0250 = C9 90
|
||||||
$C990:
|
$C990:
|
||||||
begin
|
begin
|
||||||
|
CorrectOutStrSize(2, 3);
|
||||||
OutStr[OutCounter] := #$E2;
|
OutStr[OutCounter] := #$E2;
|
||||||
OutStr[OutCounter+1]:= #$B1;
|
OutStr[OutCounter+1]:= #$B1;
|
||||||
OutStr[OutCounter+2]:= #$AF;
|
OutStr[OutCounter+2]:= #$AF;
|
||||||
@ -2094,6 +2113,7 @@ begin
|
|||||||
end;
|
end;
|
||||||
$C991:
|
$C991:
|
||||||
begin
|
begin
|
||||||
|
CorrectOutStrSize(2, 3);
|
||||||
OutStr[OutCounter] := #$E2;
|
OutStr[OutCounter] := #$E2;
|
||||||
OutStr[OutCounter+1]:= #$B1;
|
OutStr[OutCounter+1]:= #$B1;
|
||||||
OutStr[OutCounter+2]:= #$AD;
|
OutStr[OutCounter+2]:= #$AD;
|
||||||
@ -2102,6 +2122,7 @@ begin
|
|||||||
end;
|
end;
|
||||||
$C992:
|
$C992:
|
||||||
begin
|
begin
|
||||||
|
CorrectOutStrSize(2, 3);
|
||||||
OutStr[OutCounter] := #$E2;
|
OutStr[OutCounter] := #$E2;
|
||||||
OutStr[OutCounter+1]:= #$B1;
|
OutStr[OutCounter+1]:= #$B1;
|
||||||
OutStr[OutCounter+2]:= #$B0;
|
OutStr[OutCounter+2]:= #$B0;
|
||||||
@ -2119,6 +2140,7 @@ begin
|
|||||||
$C9A3: NewChar := $C694;
|
$C9A3: NewChar := $C694;
|
||||||
$C9A5:
|
$C9A5:
|
||||||
begin
|
begin
|
||||||
|
CorrectOutStrSize(2, 3);
|
||||||
OutStr[OutCounter] := #$EA;
|
OutStr[OutCounter] := #$EA;
|
||||||
OutStr[OutCounter+1]:= #$9E;
|
OutStr[OutCounter+1]:= #$9E;
|
||||||
OutStr[OutCounter+2]:= #$8D;
|
OutStr[OutCounter+2]:= #$8D;
|
||||||
@ -2129,6 +2151,7 @@ begin
|
|||||||
$C9A9: NewChar := $C696;
|
$C9A9: NewChar := $C696;
|
||||||
$C9AB:
|
$C9AB:
|
||||||
begin
|
begin
|
||||||
|
CorrectOutStrSize(2, 3);
|
||||||
OutStr[OutCounter] := #$E2;
|
OutStr[OutCounter] := #$E2;
|
||||||
OutStr[OutCounter+1]:= #$B1;
|
OutStr[OutCounter+1]:= #$B1;
|
||||||
OutStr[OutCounter+2]:= #$A2;
|
OutStr[OutCounter+2]:= #$A2;
|
||||||
@ -2139,6 +2162,7 @@ begin
|
|||||||
// 0270 = C9 B0
|
// 0270 = C9 B0
|
||||||
$C9B1:
|
$C9B1:
|
||||||
begin
|
begin
|
||||||
|
CorrectOutStrSize(2, 3);
|
||||||
OutStr[OutCounter] := #$E2;
|
OutStr[OutCounter] := #$E2;
|
||||||
OutStr[OutCounter+1]:= #$B1;
|
OutStr[OutCounter+1]:= #$B1;
|
||||||
OutStr[OutCounter+2]:= #$AE;
|
OutStr[OutCounter+2]:= #$AE;
|
||||||
@ -2149,6 +2173,7 @@ begin
|
|||||||
$C9B5: NewChar := $C69F;
|
$C9B5: NewChar := $C69F;
|
||||||
$C9BD:
|
$C9BD:
|
||||||
begin
|
begin
|
||||||
|
CorrectOutStrSize(2, 3);
|
||||||
OutStr[OutCounter] := #$E2;
|
OutStr[OutCounter] := #$E2;
|
||||||
OutStr[OutCounter+1]:= #$B1;
|
OutStr[OutCounter+1]:= #$B1;
|
||||||
OutStr[OutCounter+2]:= #$A4;
|
OutStr[OutCounter+2]:= #$A4;
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user