[Cuis-dev] [FIX] Add class instance variables to classes sometimes fails

Gerald Klix cuis.01 at klix.ch
Tue Jun 28 05:42:16 PDT 2022


Hi all, Hi Juan,

Yesterday night I discovered that adding class instance variables to a 
class with sub-classes (sometimes) fails in Haver.

Alas this is not only an issue in Haver but also in
Cuis. Please find enclosed a fix for that issue.


HTH and Best Regards,

Gerald
-------------- next part --------------
'From Cuis 6.0 [latest update: #5323] on 28 June 2022 at 2:28:55 pm'!

!ClassDescription methodsFor: 'private' stamp: 'KLG 6/28/2022 14:28:39'!
newInstanceFrom: oldInstance variable: variable size: instSize map: map
	"Create a new instance of the receiver based on the given old instance.
	The supplied map contains a mapping of the old instVar names into
	the receiver's instVars"
	| new |
	variable
		ifTrue: [new _ self basicNew: oldInstance basicSize]
		ifFalse: [new _ self basicNew].
	"Limit this to the map's size, if the map's size is smaller than the instance size, we added an instance variable."
	1 to: (instSize min: map size) do: 
		[:offset |  (map at: offset) > 0 ifTrue:
			[new instVarAt: offset
					put: (oldInstance instVarAt: (map at: offset))]].
	variable 
		ifTrue: [1 to: oldInstance basicSize do: 
					[:offset |
					new basicAt: offset put: (oldInstance basicAt: offset)]].
	^new! !


More information about the Cuis-dev mailing list