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
> 
> Error: Improper store into indexable object
> Bitmap(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:
> Error: Improper store into indexable object
> Bitmap(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
> 


Reply via email to