diff --git a/blender_asset_tracer/blendfile/__init__.py b/blender_asset_tracer/blendfile/__init__.py index f344176..bbd7962 100644 --- a/blender_asset_tracer/blendfile/__init__.py +++ b/blender_asset_tracer/blendfile/__init__.py @@ -229,15 +229,6 @@ class BlendFile: assert isinstance(code, bytes) return self.code_index[code] - def find_block_from_address(self, address: int) -> typing.Optional['BlendFileBlock']: - """Return the block at that address, or None if not found. - - :param address: the BlendFileBlock.addr_old value - """ - # TODO(Sybren): mark as deprecated in favour of dereference_pointer(). - assert type(address) is int - return self.block_from_addr.get(address) - def close(self): """Close the blend file. diff --git a/blender_asset_tracer/blendfile/iterators.py b/blender_asset_tracer/blendfile/iterators.py index 3047af7..c3edd13 100644 --- a/blender_asset_tracer/blendfile/iterators.py +++ b/blender_asset_tracer/blendfile/iterators.py @@ -11,7 +11,9 @@ def listbase(block: BlendFileBlock, next_path: FieldPath = b'next') \ while block: yield block next_ptr = block[next_path] - block = block.bfile.find_block_from_address(next_ptr) + if next_ptr == 0: + break + block = block.bfile.dereference_pointer(next_ptr) def sequencer_strips(sequence_editor: BlendFileBlock) \