diff options
author | Graeme Geldenhuys <graemeg@gmail.com> | 2009-09-30 00:03:12 +0200 |
---|---|---|
committer | Graeme Geldenhuys <graemeg@gmail.com> | 2009-09-30 00:03:12 +0200 |
commit | bf4589d2bd16a9885aba550a4f912be29c1d3792 (patch) | |
tree | c7c972b525a9b3f3d80c9aa034d0c1dcbcb68c26 /src/HelpFileHeader.pas | |
parent | 11733dadd8b93f4dd5880eb7375363b416de1226 (diff) | |
download | fpGUI-bf4589d2bd16a9885aba550a4f912be29c1d3792.tar.xz |
Forgot to apply "packed" to record structures.
This was the cause for misaligned data and the AV's I experienced.
Rookie mistake!!
Signed-off-by: Graeme Geldenhuys <graemeg@gmail.com>
Diffstat (limited to 'src/HelpFileHeader.pas')
-rw-r--r-- | src/HelpFileHeader.pas | 18 |
1 files changed, 9 insertions, 9 deletions
diff --git a/src/HelpFileHeader.pas b/src/HelpFileHeader.pas index 3ba5ecd8..aba7161f 100644 --- a/src/HelpFileHeader.pas +++ b/src/HelpFileHeader.pas @@ -14,8 +14,7 @@ uses DataTypes; Type - PHelpFileHeader = ^THelpFileHeader; - THelpFileHeader = record + THelpFileHeader = packed record ID: int16; // ID magic word (5348h = "HS") unknown1: int8; // unknown purpose, could be third letter of ID flags: int8; // probably a flag word... @@ -54,9 +53,10 @@ Type reserved: array[ 0..2 ] of int32; // for future use. set to zero. title: array[ 0..47 ] of char; // ASCII title of database end; - + pTHelpFileHeader = ^THelpFileHeader; + Type - TTOCEntryStart = record + TTOCEntryStart = packed record length: int8; // length of the entry including this byte flags: int8; // flag byte, description folows (MSB first) // bit1 haschildren; // following nodes are a higher level @@ -70,14 +70,14 @@ Type end; pTTOCEntryStart = ^TTOCEntryStart; - TExtendedTOCEntry = record + TExtendedTOCEntry = packed record w1: int8; w2: int8; end; pExtendedTOCEntry = ^TExtendedTOCEntry; - TTOCEntryOffsetArray = array[ 0..0 ] of int32; - pTTOCEntryOffsetArray = ^ TTOCEntryOffsetArray; + TTOCEntryOffsetArray = packed array[ 0..0 ] of int32; + pTTOCEntryOffsetArray = ^TTOCEntryOffsetArray; Const TOCEntryExtended = 32; @@ -85,14 +85,14 @@ Const TOCEntryHasChildren = 128; type - THelpXYPair = record + THelpXYPair = packed record Flags: int8; X: int16; Y: int16; end; pHelpXYPair = ^ THelpXYPair; - TSlotHeader = record + TSlotHeader = packed record stuff: int8; // always 0?? localdictpos: int32; // file offset of the local dictionary nlocaldict: int8; // number of entries in the local dict |