diff options
| author | Brian Potchik <brian@vector35.com> | 2025-05-07 17:32:12 -0400 |
|---|---|---|
| committer | Brian Potchik <brian@vector35.com> | 2025-05-07 17:32:12 -0400 |
| commit | c77f9fd22d9fc23adad77d9d4cc2249a631b8813 (patch) | |
| tree | aca040f3b92eaf426bb832527e23b23471961733 /python/binaryview.py | |
| parent | 70abf7ad5fe83dc6b2cf560026b5f099ea1720b6 (diff) | |
Update BinaryView Python context manager to actually release the BinaryView resource.
Diffstat (limited to 'python/binaryview.py')
| -rw-r--r-- | python/binaryview.py | 17 |
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 |
