From c77f9fd22d9fc23adad77d9d4cc2249a631b8813 Mon Sep 17 00:00:00 2001 From: Brian Potchik Date: Wed, 7 May 2025 17:32:12 -0400 Subject: Update BinaryView Python context manager to actually release the BinaryView resource. --- python/binaryview.py | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) (limited to 'python/binaryview.py') diff --git a/python/binaryview.py b/python/binaryview.py index 092f9bef..ccd4fba3 100644 --- a/python/binaryview.py +++ b/python/binaryview.py @@ -2605,18 +2605,25 @@ class BinaryView: self._platform = None self._endianness = None + def _cleanup(self): + if core is None: + return + for i in self._notifications.values(): + i._unregister() + self._notifications.clear() + if self.handle is not None: + core.BNFreeBinaryView(self.handle) + self.handle = None + def __enter__(self) -> 'BinaryView': return self def __exit__(self, type, value, traceback): + self._cleanup() self.file.close() def __del__(self): - if core is None: - return - for i in self._notifications.values(): - i._unregister() - core.BNFreeBinaryView(self.handle) + self._cleanup() def __repr__(self): start = self.start -- cgit v1.3.1