summaryrefslogtreecommitdiff
path: root/python/binaryview.py
diff options
context:
space:
mode:
authorBrian Potchik <brian@vector35.com>2025-05-07 17:32:12 -0400
committerBrian Potchik <brian@vector35.com>2025-05-07 17:32:12 -0400
commitc77f9fd22d9fc23adad77d9d4cc2249a631b8813 (patch)
treeaca040f3b92eaf426bb832527e23b23471961733 /python/binaryview.py
parent70abf7ad5fe83dc6b2cf560026b5f099ea1720b6 (diff)
Update BinaryView Python context manager to actually release the BinaryView resource.
Diffstat (limited to 'python/binaryview.py')
-rw-r--r--python/binaryview.py17
1 files changed, 12 insertions, 5 deletions
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