Hello
this is a follow up mail on loading a project file (*.pr) saved in Squeak 3.10.2 [1] into Squeak 6.0a-#18000 [2]
The code breaks at
ImageSegmentLoader>>readObject [3]
I'd like to find out which class causes this problem.
readObject | header oop nWords class format | header := self readUint32. (header bitAnd: HeaderTypeMask) caseOf: { [HeaderTypeSizeAndClass] -> [nWords := header >> 2. class := self readUint32. header := self readUint32]. [HeaderTypeClass] ->
The header is a 32 bit integer denoting the class, I assume. I'd like to know which class causes the problem.
How can I find out which class this 32 bit integer refers to?
Regards
Hannes
--------------------------------------------------------------------------------------------------------------------------------
[1] The project file has a workspace in it in addition to some RectangleMorphs and SimpleButtonMorphs which were loaded succesfully in another test.
http://forum.world.st/The-Trunk-Morphic-kfr-1435-mcz-tp5077266p5077476.html The reference has a test project *.pr file attached.
[2] http://lists.squeakfoundation.org/pipermail/squeak-dev/2018-May/198848.html
New method added
SmartRefStream >> in the conversion protocol
methodPropertiespps0
^ AdditionalMethodState
[3] readObject | header oop nWords class format | header := self readUint32. (header bitAnd: HeaderTypeMask) caseOf: { [HeaderTypeSizeAndClass] -> [nWords := header >> 2. class := self readUint32. header := self readUint32]. [HeaderTypeClass] -> [class := header - 1. header := self readUint32. nWords := header
2 bitAnd: 63].
[HeaderTypeShort] -> [nWords := header >> 2 bitAnd: 63. class := header >> 12 bitAnd: 31]. } otherwise: [self error: 'unexpected free chunk']. nWords := nWords - 1. "nWords includes 1 header word" oop := position. ^[oopMap at: oop ifAbsentPut: [format := header >> 8 bitAnd: 15. "hash := header >> 17 bitAnd: 4095." self allocateObject: format class: class size: nWords]] ensure: [position := oop + (nWords * 4)]