Eliot Miranda uploaded a new version of VMMaker to project VM Maker: http://source.squeak.org/VMMaker/VMMaker.oscog-eem.3355.mcz
==================== Summary ====================
Name: VMMaker.oscog-eem.3355 Author: eem Time: 21 March 2024, 9:49:48.008968 pm UUID: c384a960-5652-4118-b6ab-563e95c1bc74 Ancestors: VMMaker.oscog-eem.3354
Fix checkImageHeaderFromBytes:AndSize:; the headerSize field in a header is 32 bits, not wordSize.
=============== Diff against VMMaker.oscog-eem.3354 ===============
Item was changed: ----- Method: StackInterpreter>>checkImageHeaderFromBytes:AndSize: (in category 'image save/restore') ----- checkImageHeaderFromBytes: bytes AndSize: totalSize "Support for embedded images. Check that the first few bytes of a potential header and answer if it looks like something the VM can load, The method checks the first three fields of the header (magic, header size & data size) & the total size. The magic number should be correct. The header size should be correct. The size of the data should be at least as long as the headerSize plus the data size in the header"
<var: 'bytes' type: #'char *'> <public> | version headerSize dataSize | "Need at least headerSize bytes; no point going further if not..." totalSize < (objectMemory wordSize * 16) ifTrue: [^false].
version := self long32At: bytes. + headerSize := self long32At: bytes + 4. + dataSize := self longAt: bytes + 8. - headerSize := self longAt: bytes + 4. - dataSize := self longAt: bytes + 4 + objectMemory wordSize.
(self readableFormat: version) ifFalse: [(self readableFormat: version byteSwap32) ifFalse: [^false]. headerSize := objectMemory byteSwapped: headerSize. dataSize := objectMemory byteSwapped: dataSize].
^headerSize = objectMemory wordSize * 16 and: [totalSize >= (headerSize + dataSize)]!
vm-dev@lists.squeakfoundation.org