CachingRegistry.st
changeset 20994 a210e2fb2993
parent 20630 0bb11d4c8772
child 21026 81e280fc1b93
--- a/CachingRegistry.st	Fri Nov 18 16:24:51 2016 +0100
+++ b/CachingRegistry.st	Fri Nov 18 16:25:05 2016 +0100
@@ -1,3 +1,5 @@
+"{ Encoding: utf8 }"
+
 "
  COPYRIGHT (c) 1999 by eXept Software AG
 	      All Rights Reserved
@@ -91,13 +93,19 @@
     ].
 
     "check the whole registry..."
-    keyArray validElementsDo:[:obj |
-        (obj ~~ DeletedEntry and:[aBlock value:obj]) ifTrue:[
-            keptReferences size >= cacheSize ifTrue:[
-                keptReferences removeFirst.
+    keyArray validElementsDo:[:eachElement |
+        eachElement ~~ DeletedEntry ifTrue:[
+            |realObject|
+
+            realObject := eachElement.
+            eachElement == NilEntry ifTrue:[realObject := nil].
+            (aBlock value:realObject) ifTrue:[
+                keptReferences size >= cacheSize ifTrue:[
+                    keptReferences removeFirst.
+                ].
+                keptReferences addLast:realObject.
+                ^ realObject
             ].
-            keptReferences addLast:obj.
-            ^ obj
         ].
     ].
     ^ exceptionValue value