@@ -897,6 +897,11 @@ cdef class BlockValuesRefs:
897
897
else:
898
898
self.referenced_blocks = []
899
899
900
+ def _clear_dead_references(self ) -> None:
901
+ self.referenced_blocks = [
902
+ ref for ref in self .referenced_blocks if ref() is not None
903
+ ]
904
+
900
905
def add_reference(self , blk: Block ) -> None:
901
906
"""Adds a new reference to our reference collection.
902
907
@@ -905,6 +910,7 @@ cdef class BlockValuesRefs:
905
910
blk : Block
906
911
The block that the new references should point to.
907
912
"""
913
+ self._clear_dead_references()
908
914
self.referenced_blocks.append(weakref.ref(blk ))
909
915
910
916
def add_index_reference(self , index: object ) -> None:
@@ -915,6 +921,7 @@ cdef class BlockValuesRefs:
915
921
index : Index
916
922
The index that the new reference should point to.
917
923
"""
924
+ self._clear_dead_references()
918
925
self.referenced_blocks.append(weakref.ref(index ))
919
926
920
927
def has_reference(self ) -> bool:
@@ -927,8 +934,6 @@ cdef class BlockValuesRefs:
927
934
-------
928
935
bool
929
936
"""
930
- self.referenced_blocks = [
931
- ref for ref in self .referenced_blocks if ref() is not None
932
- ]
937
+ self._clear_dead_references()
933
938
# Checking for more references than block pointing to itself
934
939
return len(self.referenced_blocks ) > 1
0 commit comments