summaryrefslogtreecommitdiff
path: root/python
diff options
context:
space:
mode:
Diffstat (limited to 'python')
-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