'From Squeak3.1alpha of 5 February 2001 [latest update: #4070] on 24 May 2001 at 9:47:57 pm'! "Change Set: FinalizationFix Date: 21 May 2001 Author: Leandro Caniglia Prevents a captive variable in WeakArray finalization from holding onto garbage. The postscript recreates the finalization process using the new code. "! !WeakArray class methodsFor: 'private' stamp: 'di 5/21/2001 21:49'! finalizationProcess [true] whileTrue: [FinalizationSemaphore wait. FinalizationLock critical: [FinalizationDependents do: [:weakDependent | weakDependent ifNotNil: [weakDependent finalizeValues. "***Following statement is required to keep weakDependent from holding onto its value as garbage.***" weakDependent _ nil]]] ifError: [:msg :rcvr | rcvr error: msg]. ]. ! ! "Postscript: Recreate the finalization process using the new code." | fp | fp _ WeakArray classPool at: #FinalizationProcess. fp ifNotNil: [fp terminate]. fp _ [WeakArray finalizationProcess] fixTemps newProcess. WeakArray classPool at: #FinalizationProcess put: fp. fp priority: Processor userInterruptPriority. fp resume. fp _ nil !