SynEdit: syneditmiscclasses: safer align, bug #19109

git-svn-id: trunk@32570 -
This commit is contained in:
mattias 2011-09-30 14:28:58 +00:00
parent 883880f37a
commit 09ed77ad6c

View File

@ -336,7 +336,11 @@ type
property Options: TSynSearchOptions write SetOptions; property Options: TSynSearchOptions write SetOptions;
end; end;
{$IFDEF FPC_REQUIRES_PROPER_ALIGNMENT}
TSynClipboardStreamTag = type integer;
{$ELSE }
TSynClipboardStreamTag = type word; TSynClipboardStreamTag = type word;
{$ENDIF}
{ TSynClipboardStream } { TSynClipboardStream }
@ -1283,6 +1287,9 @@ begin
inc(ctag, SizeOf(TSynClipboardStreamTag)); inc(ctag, SizeOf(TSynClipboardStreamTag));
inc(ctag, PInteger(ctag)^); inc(ctag, PInteger(ctag)^);
inc(ctag, SizeOf(Integer)); inc(ctag, SizeOf(Integer));
{$IFDEF FPC_REQUIRES_PROPER_ALIGNMENT}
ctag := Align(ctag, SizeOf(integer));
{$ENDIF}
end; end;
end; end;
if (Result <> nil) and if (Result <> nil) and
@ -1310,9 +1317,14 @@ procedure TSynClipboardStream.AddTag(ATag: TSynClipboardStreamTag; Location: Poi
var var
msize: Int64; msize: Int64;
mpos: Pointer; mpos: Pointer;
LenBlock:PtrUInt;
begin begin
msize := FMemStream.Size; msize := FMemStream.Size;
FMemStream.Size := msize + Len + SizeOf(TSynClipboardStreamTag) + SizeOf(Integer); LenBlock:= Len + SizeOf(TSynClipboardStreamTag) + SizeOf(Integer);
{$IFDEF FPC_REQUIRES_PROPER_ALIGNMENT}
LenBlock := Align(LenBlock, SizeOf(integer));
{$ENDIF}
FMemStream.Size := msize +LenBlock;
mpos := FMemStream.Memory + msize; mpos := FMemStream.Memory + msize;
TSynClipboardStreamTag(mpos^) := ATag; TSynClipboardStreamTag(mpos^) := ATag;
inc(mpos, SizeOf(TSynClipboardStreamTag)); inc(mpos, SizeOf(TSynClipboardStreamTag));