That’s a problem with the latest VM. You need to use the stable VM until Esteban has compiled a fixed version.
Cheers, Max > On 21 Mar 2016, at 08:19, Nicolai Hess <[email protected]> wrote: > > PharoVM-Spur32-win-latest.zip from 18.03.16: > > Opening a fresh image works, but using the menu shows an error > Improper store into indexable object > > [31mError: Improper store into indexable object > [0mBitmap(Object)>>error: > Bitmap(Object)>>errorImproperStore > Bitmap(Object)>>at:put: > [ :assoc | > | theta nextIndex nextColor nextWord distance step | > nextIndex := (assoc key * length) rounded. > nextColor := assoc value. > nextWord := nextColor pixelWordForDepth: 32. > distance := nextIndex - lastIndex. > distance = 0 > ifTrue: [ distance := 1 ]. > step := 1.0 / distance asFloat. > theta := 0.0. > lastIndex + 1 to: nextIndex do: [ :i | > theta := theta + step. > "The following is an open-coded version of: > color := nextColor alphaMixed: theta with: lastColor. > bits at: i put: (color scaledPixelValue32). > " > bits > at: i > put: (self scaledAlphaMix: theta of: lastWord with: nextWord) ]. > lastIndex := nextIndex. > lastColor := nextColor. > lastWord := nextWord ] in GradientFillStyle>>computePixelRampOfSize: in > Block: [ :assoc | ... > SortedCollection(OrderedCollection)>>do: > GradientFillStyle>>computePixelRampOfSize: > [ :key | (GradientFillStyle new colorRamp: key) computePixelRampOfSize: 512 ] > in GradientFillStyle class>>initPixelRampCache in Block: [ :key | > (GradientFillStyle new colorRamp: key) co...etc... > BlockClosure>>cull: > [ | value | > value := block cull: key. > "Sadly we have to check the presence of key again > in case of the block execution already added the entry" > keyIndex > associationAt: key > ifAbsent: [ association := self newAssociationKey: key value: value. > ^ self handleMiss: association ] ] in [ | association | > association := keyIndex > associationAt: key > ifAbsent: [ | value | > value := block cull: key. > "Sadly we have to check the presence of key again > in case of the block execution already added the entry" > keyIndex > associationAt: key > ifAbsent: [ association := self newAssociationKey: key value: > value. > ^ self handleMiss: association ] ]. > ^ self handleHit: association ] in LRUCache>>at:ifAbsentPut: in Block: [ | > value |... > Dictionary>>associationAt:ifAbsent: > [ | association | > association := keyIndex > associationAt: key > ifAbsent: [ | value | > value := block cull: key. > "Sadly we have to check the presence of key again > in case of the block execution already added the entry" > keyIndex > associationAt: key > ifAbsent: [ association := self newAssociationKey: key value: > value. > ^ self handleMiss: association ] ]. > ^ self handleHit: association ] in LRUCache>>at:ifAbsentPut: in Block: [ | > association |... > UndefinedObject>>ifNil:ifNotNil: > LRUCache(AbstractCache)>>critical: > LRUCache>>at:ifAbsentPut: > LRUCache(AbstractCache)>>at: > GradientFillStyle>>pixelRamp > BalloonEngine>>registerFill: > BalloonEngine>>registerFills: > BalloonEngine>>registerFill:and: > BalloonEngine>>drawRectangle:fill:borderWidth:borderColor:transform: > BalloonCanvas>>drawRectangle:color:borderWidth:borderColor: > BalloonCanvas>>fillRectangle:basicFillStyle: > FormCanvas>>balloonFillRectangle:fillStyle: > FormCanvas>>fillRectangle:basicFillStyle: > GradientFillStyle(FillStyle)>>fillRectangle:on: > FormCanvas(Canvas)>>fillRectangle:fillStyle: > FormCanvas(Canvas)>>fillRectangle:fillStyle:borderStyle: > MenuMorph(Morph)>>drawOn: > MenuMorph>>drawOn: > FormCanvas(Canvas)>>draw: > [0m[31mError: Improper store into indexable object > [0mBitmap(Object)>>error: > Bitmap(Object)>>errorImproperStore > Bitmap(Object)>>at:put: > [ :assoc | > | theta nextIndex nextColor nextWord distance step | > nextIndex := (assoc key * length) rounded. > nextColor := assoc value. > nextWord := nextColor pixelWordForDepth: 32. > distance := nextIndex - lastIndex. > distance = 0 > ifTrue: [ distance := 1 ]. > step := 1.0 / distance asFloat. > theta := 0.0. > lastIndex + 1 to: nextIndex do: [ :i | > theta := theta + step. > "The following is an open-coded version of: > color := nextColor alphaMixed: theta with: lastColor. > bits at: i put: (color scaledPixelValue32). > " > bits > at: i > put: (self scaledAlphaMix: theta of: lastWord with: nextWord) ]. > lastIndex := nextIndex. > lastColor := nextColor. > lastWord := nextWord ] in GradientFillStyle>>computePixelRampOfSize: in > Block: [ :assoc | ... > SortedCollection(OrderedCollection)>>do: > GradientFillStyle>>computePixelRampOfSize: > [ :key | (GradientFillStyle new colorRamp: key) computePixelRampOfSize: 512 ] > in GradientFillStyle class>>initPixelRampCache in Block: [ :key | > (GradientFillStyle new colorRamp: key) co...etc... > BlockClosure>>cull: > [ | value | > value := block cull: key. > "Sadly we have to check the presence of key again > in case of the block execution already added the entry" > keyIndex > associationAt: key > ifAbsent: [ association := self newAssociationKey: key value: value. > ^ self handleMiss: association ] ] in [ | association | > association := keyIndex > associationAt: key > ifAbsent: [ | value | > value := block cull: key. > "Sadly we have to check the presence of key again > in case of the block execution already added the entry" > keyIndex > associationAt: key > ifAbsent: [ association := self newAssociationKey: key value: > value. > ^ self handleMiss: association ] ]. > ^ self handleHit: association ] in LRUCache>>at:ifAbsentPut: in Block: [ | > value |... > Dictionary>>associationAt:ifAbsent: > [ | association | > association := keyIndex > associationAt: key > ifAbsent: [ | value | > value := block cull: key. > "Sadly we have to check the presence of key again > in case of the block execution already added the entry" > keyIndex > associationAt: key > ifAbsent: [ association := self newAssociationKey: key value: > value. > ^ self handleMiss: association ] ]. > ^ self handleHit: association ] in LRUCache>>at:ifAbsentPut: in Block: [ | > association |... > UndefinedObject>>ifNil:ifNotNil: > LRUCache(AbstractCache)>>critical: > LRUCache>>at:ifAbsentPut: > LRUCache(AbstractCache)>>at: > GradientFillStyle>>pixelRamp > GradientFillStyle>>= > PluggableButtonMorph(Morph)>>fillStyle: > PluggableButtonMorph>>extent: > Pharo3Theme(UITheme)>>newButtonIn:for:getState:action:arguments:getEnabled:label:help: > Pharo3Theme(UITheme)>>newTaskbarButtonIn:for: > SpecWindow(SystemWindow)>>taskbarButtonFor: > TaskbarTask>>taskbarButtonFor: > [ :t | > | button | > button := t taskbarButtonFor: self. > button ifNotNil: [ self addMorphBack: button ] ] in > TaskbarMorph>>updateTaskButtons in Block: [ :t | ... > OrderedCollection>>do: > TaskbarMorph>>updateTaskButtons > TaskbarMorph>>updateTasks > [ self updateBounds. > self updateTasks ] in TaskbarMorph>>ownerChanged in Block: [ self > updateBounds.... > BlockClosure>>on:do: > TaskbarMorph>>ownerChanged > [0m
