mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-04-22 10:59:29 +02:00
Use signed instead of unsigned integer in a structure to prevent range check errors. Issue #22760
git-svn-id: trunk@38465 -
This commit is contained in:
parent
4ae545e36d
commit
f26e63161d
@ -164,7 +164,7 @@ begin
|
||||
LookupRoot.DesignInfo := LeftTopToDesignInfo(Left, Top);
|
||||
// always fill the whole designer form
|
||||
TControl(LookupRoot).SetBounds(0, 0, Width, Height);
|
||||
//DebugLn(['TFrameDesignerForm.DoSaveBounds ',Left,',',Top,' ',LongRec(LookupRoot.DesignInfo).Lo,',',LongRec(LookupRoot.DesignInfo).hi]);
|
||||
//DebugLn(['TFrameDesignerForm.DoSaveBounds ',Left,',',Top,' ',LazLongRec(LookupRoot.DesignInfo).Lo,',',LongRec(LookupRoot.DesignInfo).hi]);
|
||||
end
|
||||
else
|
||||
if LookupRoot <> nil then
|
||||
|
@ -1298,7 +1298,7 @@ begin
|
||||
// no parent and not a form
|
||||
AControl.SetBounds(0,0,CompWidth,CompHeight);
|
||||
AControl.DesignInfo := LeftTopToDesignInfo(CompLeft, CompTop);
|
||||
//DebugLn(['TCustomFormEditor.CreateComponent ',dbgsName(AControl),' ',LongRec(AControl.DesignInfo).Lo,',',LongRec(AControl.DesignInfo).Hi]);
|
||||
//DebugLn(['TCustomFormEditor.CreateComponent ',dbgsName(AControl),' ',LazLongRec(AControl.DesignInfo).Lo,',',LongRec(AControl.DesignInfo).Hi]);
|
||||
end;
|
||||
end
|
||||
else
|
||||
|
@ -23,7 +23,7 @@ interface
|
||||
|
||||
uses
|
||||
Math, Classes, SysUtils, LCLProc, TypInfo, types, Forms, Controls,
|
||||
ProjectIntf, ComponentEditors, ObjectInspector;
|
||||
LCLClasses, ProjectIntf, ComponentEditors, ObjectInspector;
|
||||
|
||||
const
|
||||
ComponentPaletteImageWidth = 24;
|
||||
@ -241,24 +241,24 @@ end;
|
||||
|
||||
function LeftFromDesignInfo(ADesignInfo: LongInt): SmallInt;
|
||||
begin
|
||||
Result := LongRec(ADesignInfo).Lo;
|
||||
Result := LazLongRec(ADesignInfo).Lo;
|
||||
end;
|
||||
|
||||
function TopFromDesignInfo(ADesignInfo: LongInt): SmallInt;
|
||||
begin
|
||||
Result := LongRec(ADesignInfo).Hi;
|
||||
Result := LazLongRec(ADesignInfo).Hi;
|
||||
end;
|
||||
|
||||
function LeftTopToDesignInfo(const ALeft, ATop: SmallInt): LongInt;
|
||||
begin
|
||||
LongRec(Result).Lo:=ALeft;
|
||||
LongRec(Result).Hi:=ATop;
|
||||
LazLongRec(Result).Lo:=ALeft;
|
||||
LazLongRec(Result).Hi:=ATop;
|
||||
end;
|
||||
|
||||
procedure DesignInfoToLeftTop(ADesignInfo: LongInt; out ALeft, ATop: SmallInt);
|
||||
begin
|
||||
ALeft := LongRec(ADesignInfo).Lo;
|
||||
ATop := LongRec(ADesignInfo).Hi;
|
||||
ALeft := LazLongRec(ADesignInfo).Lo;
|
||||
ATop := LazLongRec(ADesignInfo).Hi;
|
||||
end;
|
||||
|
||||
{ TDesignerMediator }
|
||||
|
@ -40,7 +40,7 @@ var
|
||||
Temp: LongInt;
|
||||
begin
|
||||
Temp:=DesignInfo;
|
||||
LongRec(Temp).Lo:=Reader.ReadInteger;
|
||||
LazLongRec(Temp).Lo:=Reader.ReadInteger;
|
||||
DesignInfo:=Temp;
|
||||
end;
|
||||
|
||||
@ -49,18 +49,18 @@ var
|
||||
Temp: LongInt;
|
||||
begin
|
||||
Temp:=DesignInfo;
|
||||
LongRec(Temp).Hi:=Reader.ReadInteger;
|
||||
LazLongRec(Temp).Hi:=Reader.ReadInteger;
|
||||
DesignInfo:=Temp;
|
||||
end;
|
||||
|
||||
procedure TCustomFrame.WriteDesignLeft(Writer: TWriter);
|
||||
begin
|
||||
Writer.WriteInteger(LongRec(DesignInfo).Lo);
|
||||
Writer.WriteInteger(LazLongRec(DesignInfo).Lo);
|
||||
end;
|
||||
|
||||
procedure TCustomFrame.WriteDesignTop(Writer: TWriter);
|
||||
begin
|
||||
Writer.WriteInteger(LongRec(DesignInfo).Hi);
|
||||
Writer.WriteInteger(LazLongRec(DesignInfo).Hi);
|
||||
end;
|
||||
|
||||
class procedure TCustomFrame.WSRegisterClass;
|
||||
@ -142,15 +142,15 @@ end;
|
||||
procedure TCustomFrame.DefineProperties(Filer: TFiler);
|
||||
Var
|
||||
Ancestor: TComponent;
|
||||
Temp: longint;
|
||||
Temp: LongInt;
|
||||
begin
|
||||
Temp:=0;
|
||||
Ancestor:=TComponent(Filer.Ancestor);
|
||||
if Assigned(Ancestor) then Temp:=Ancestor.DesignInfo;
|
||||
Filer.Defineproperty('DesignLeft',@ReadDesignLeft,@WriteDesignLeft,
|
||||
(longrec(DesignInfo).Lo<>Longrec(Temp).Lo));
|
||||
(LazLongRec(DesignInfo).Lo<>LazLongrec(Temp).Lo));
|
||||
Filer.Defineproperty('DesignTop',@ReadDesignTop,@WriteDesignTop,
|
||||
(longrec(DesignInfo).Hi<>Longrec(Temp).Hi));
|
||||
(LazLongRec(DesignInfo).Hi<>LazLongrec(Temp).Hi));
|
||||
end;
|
||||
|
||||
procedure TCustomFrame.CalculatePreferredSize(var PreferredWidth,
|
||||
|
@ -33,6 +33,18 @@ uses
|
||||
|
||||
type
|
||||
|
||||
// SysUtils.LongRec has unsigned Word for Lo and Hi,
|
||||
// we need a similar record with signed ShortInt
|
||||
LazLongRec = packed record
|
||||
case Integer of
|
||||
{$ifdef FPC_LITTLE_ENDIAN}
|
||||
0 : (Lo,Hi : ShortInt);
|
||||
{$else FPC_LITTLE_ENDIAN}
|
||||
0 : (Hi,Lo : ShortInt);
|
||||
{$endif FPC_LITTLE_ENDIAN}
|
||||
1 : (Bytes : Array[0..3] of Byte);
|
||||
end;
|
||||
|
||||
{ TLCLComponent }
|
||||
|
||||
TLCLComponent = class(TComponent)
|
||||
|
Loading…
Reference in New Issue
Block a user