Hi everyone,
This patch fixes the Fcode evaluation of b(field) which was implemented
incorrectly. With this patch applied, corruption seen in several of the
package words for Milax/Martux has now disappeared. Included below are
the Fcode test cases I used (courtesy of Milax):
\ Test Fcode struct...field...constant (no headers)
\ Forth: struct /x field >filesize /x field >offset /x field >block0
constant /file-record 0 >offset .
here
cc c, \ offset16
a5 c, \ 0
02 c, 48 c, \ /x
b5 c, 08 c, 00 c, \ new-token
be c, \ b(field)
02 c, 48 c, \ /x
b5 c, 08 c, 01 c, \ new-token
be c, \ b(field)
02 c, 48 c, \ /x
b5 c, 08 c, 02 c, \ new-token
be c, \ b(field)
b5 c, 08 c, 03 c, \ new-token
ba c, \ b(constant)
a5 c, \ 0
08 c, 01 c, \ Fcode #801
9d c, \ Display stack
00 c, \ End
\ Headers version
here
cc c, \ offset16
a5 c, \ 0
02 c, 48 c, \ /x
b6 c, 09 c, 3e c, 66 c, 69 c, 6c c, 65 c, 73 c, 69 c, 7a c, 65 c, \
named-token (>filesize)
08 c, 00 c,
be c, \ b(field)
02 c, 48 c, \ /x
b6 c, 07 c, 3e c, 6f c, 66 c, 66 c, 73 c, 65 c, 74 c, \ named-token
(>offset)
08 c, 01 c,
be c, \ b(field)
02 c, 48 c, \ /x
b6 c, 07 c, 3e c, 62 c, 6c c, 6f c, 63 c, 6b c, 30 c, \ named-token
(>block0)
08 c, 02 c,
be c, \ b(field)
b6 c, 0c c, 2f c, 66 c, 69 c, 6c c, 65 c, 2d c, 72 c, 65 c, 63 c, 6f
c, \ named-token (/file-record)
72 c, 64 c,
08 c, 03 c,
ba c, \ b(constant)
a5 c, \ 0
08 c, 01 c, \ Fcode #801
9d c, \ Display stack
00 c, \ End
ATB,
Mark.
--
Mark Cave-Ayland - Senior Technical Architect
PostgreSQL - PostGIS
Sirius Corporation plc - control through freedom
http://www.siriusit.co.uk
t: +44 870 608 0063