summaryrefslogtreecommitdiff
path: root/src/HelpFileHeader.pas
diff options
context:
space:
mode:
authorGraeme Geldenhuys <graemeg@gmail.com>2009-09-30 00:03:12 +0200
committerGraeme Geldenhuys <graemeg@gmail.com>2009-09-30 00:03:12 +0200
commitbf4589d2bd16a9885aba550a4f912be29c1d3792 (patch)
treec7c972b525a9b3f3d80c9aa034d0c1dcbcb68c26 /src/HelpFileHeader.pas
parent11733dadd8b93f4dd5880eb7375363b416de1226 (diff)
downloadfpGUI-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.pas18
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