Characters are now primitive. There shouldn���t be any need to change Character serialization though.

I tried to reproduce your case and I can���t. The only way I can get the primitive to fail is by supplying a negative value. I suspect that the problem happens beforehand, so that the byte being read is now at the wrong offset. Can you give me a runnable example?

Cheers,
Max

On 15 Dec 2015, at 13:18, Norbert Hartl <norbert@hartl.name> wrote:

We have a test build for pharo5 that checks if we need to do stuff for future migrations. Since yesterday it fails, of course. 
I have a fueled out object graph stored as byte array in a method. The fuel bytes are serialized using a non-spur image. Now when the spur image reads the bytes I get an exception. Has this something to do with immediate characters? Is there a way to fix that or will it just not be possible to exchange objects between spur and non-spur using fuel?

thanks,

Norbert


primitive #value: in Character class failed

Stacktrace

Character class(Object)>>primitiveFailed:
Character class(Object)>>primitiveFailed
Character class>>value:
Character class>>materializeFrom:
FLHookPrimitiveCluster>>materializeInstanceWith:
FLHookPrimitiveCluster(FLIteratingCluster)>>materializeInstancesStepWith:
FLMaterialization>>clusterInstancesStep
[ self clusterInstancesStep ] in FLMaterialization>>instancesStep
SmallInteger(Integer)>>timesRepeat:
FLMaterialization>>instancesStep
FLMaterialization>>run
[ :aDecoder | 
(FLMaterialization with: aDecoder)
	run;
	yourself ] in FLMaterializer>>setDefaultMaterialization
FLMaterializer>>materializeFrom:
FLMaterializer class>>materializeFromByteArray:
MAPExampleModels class>>readModelFromSelector:
MAPExampleModels class>>readModelNamed:
[ self readModelNamed: aString ] in MAPExampleModels class>>named:
[ self at: key put: aBlock value ] in Dictionary>>at:ifAbsentPut:
Dictionary>>at:ifAbsent:
Dictionary>>at:ifAbsentPut:
MAPExampleModels class>>named:
MAPTest>>model
MAPTest>>tcapModule
MAPTest>>testInsertSubscriberDataBitStringAccess
[ testMethod perform: testMethod selector ] in Given>>produceReturnValueAt:
[ self at: key put: aBlock value ] in Dictionary>>at:ifAbsentPut:
Dictionary>>at:ifAbsent:
Dictionary>>at:ifAbsentPut:
Given>>produceReturnValueAt:
MAPTest(Phexample)>>performTest