ValueHolderWithWeakDependents.st
changeset 3783 b7adf79a127e
parent 3488 287a7db6b8f4
--- a/ValueHolderWithWeakDependents.st	Fri Nov 11 17:21:44 2016 +0100
+++ b/ValueHolderWithWeakDependents.st	Fri Nov 11 17:22:08 2016 +0100
@@ -11,6 +11,8 @@
 "
 "{ Package: 'stx:libview2' }"
 
+"{ NameSpace: Smalltalk }"
+
 ValueHolder subclass:#ValueHolderWithWeakDependents
 	instanceVariableNames:''
 	classVariableNames:''
@@ -103,43 +105,45 @@
 
     wasBlocked := OperatingSystem blockInterrupts.
     [
-	|deps n d|
-
-	deps := dependents.
-	deps size ~~ 0 ifTrue:[
+        |deps n dep|
 
-	    "/ to save a fair amount of memory in case of
-	    "/ many dependencies, we store a single dependent in
-	    "/ a WeakArray, and switch to a WeakSet if more dependents are
-	    "/ added. Here we have to do the inverse ...
+        deps := dependents.
+        deps size ~~ 0 ifTrue:[
+            "/ to save a fair amount of memory in case of
+            "/ many dependencies, we store a single dependent in
+            "/ a WeakArray, and switch to a WeakSet if more dependents are
+            "/ added. Here we have to do the inverse ...
 
-	    deps class == WeakArray ifTrue:[
-		((d := deps at:1) == anObject
-		or:[d isNil
-		or:[d class == SmallInteger]]) ifTrue:[
-		    dependents := nil
-		]
-	    ] ifFalse:[
-		deps remove:anObject ifAbsent:[].
-		(n := deps size) == 0 ifTrue:[
-		    dependents := nil
-		] ifFalse:[
-		    n == 1 ifTrue:[
-			d := deps firstIfEmpty:nil.
-			d notNil ifTrue:[
-			    deps := WeakArray with:d
-			] ifFalse:[
-			    deps := nil
-			].
-			dependents := deps.
-		    ]
-		]
-	    ]
-	]
+            deps class == WeakArray ifTrue:[
+                ((dep := deps at:1) == anObject
+                 or:[dep isNil
+                 or:[dep class == SmallInteger]]) ifTrue:[
+                    dependents := nil
+                ]
+            ] ifFalse:[
+                dep := deps remove:anObject ifAbsent:[].
+                "if dep is nil, nothing has changed"
+                dep notNil ifTrue:[
+                    (n := deps size) == 0 ifTrue:[
+                        dependents := nil
+                    ] ifFalse:[
+                        n == 1 ifTrue:[
+                            dep := deps firstIfEmpty:nil.
+                            dep notNil ifTrue:[
+                                deps := WeakArray with:dep
+                            ] ifFalse:[
+                                deps := nil
+                            ].
+                            dependents := deps.
+                        ]
+                    ]
+                ].
+            ]
+        ]
     ] ensure:[
-	wasBlocked ifFalse:[
-	    OperatingSystem unblockInterrupts
-	]
+        wasBlocked ifFalse:[
+            OperatingSystem unblockInterrupts
+        ]
     ]
 
     "Modified: / 26.1.1998 / 19:51:50 / cg"
@@ -150,3 +154,4 @@
 version
     ^ '$Header$'
 ! !
+