2016-03-21 8:26 GMT+01:00 Max Leske <maxleske@gmail.com>:
That���s a problem with the latest VM. You need to use the stable VM until Esteban has compiled a fixed version.


Thanks, yes, stable works, I just wanted to let you know :-)
��
Cheers,
Max


> On 21 Mar 2016, at 08:19, Nicolai Hess <nicolaihess@gmail.com> 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