@@ -951,6 +951,11 @@ cdef class BlockValuesRefs:
951
951
else:
952
952
self.referenced_blocks = []
953
953
954
+ def _clear_dead_references(self ) -> None:
955
+ self.referenced_blocks = [
956
+ ref for ref in self .referenced_blocks if ref() is not None
957
+ ]
958
+
954
959
def add_reference(self , blk: SharedBlock ) -> None:
955
960
"""Adds a new reference to our reference collection.
956
961
@@ -959,6 +964,7 @@ cdef class BlockValuesRefs:
959
964
blk: SharedBlock
960
965
The block that the new references should point to.
961
966
"""
967
+ self._clear_dead_references()
962
968
self.referenced_blocks.append(weakref.ref(blk ))
963
969
964
970
def add_index_reference(self , index: object ) -> None:
@@ -969,6 +975,7 @@ cdef class BlockValuesRefs:
969
975
index : Index
970
976
The index that the new reference should point to.
971
977
"""
978
+ self._clear_dead_references()
972
979
self.referenced_blocks.append(weakref.ref(index ))
973
980
974
981
def has_reference(self ) -> bool:
@@ -981,8 +988,6 @@ cdef class BlockValuesRefs:
981
988
-------
982
989
bool
983
990
"""
984
- self.referenced_blocks = [
985
- ref for ref in self .referenced_blocks if ref() is not None
986
- ]
991
+ self._clear_dead_references()
987
992
# Checking for more references than block pointing to itself
988
993
return len(self.referenced_blocks ) > 1
0 commit comments