Skip to content

Commit c77f9fd

Browse files
committed
Update BinaryView Python context manager to actually release the BinaryView resource.
1 parent 70abf7a commit c77f9fd

File tree

1 file changed

+12
-5
lines changed

1 file changed

+12
-5
lines changed

python/binaryview.py

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2605,18 +2605,25 @@ def __init__(
26052605
self._platform = None
26062606
self._endianness = None
26072607

2608+
def _cleanup(self):
2609+
if core is None:
2610+
return
2611+
for i in self._notifications.values():
2612+
i._unregister()
2613+
self._notifications.clear()
2614+
if self.handle is not None:
2615+
core.BNFreeBinaryView(self.handle)
2616+
self.handle = None
2617+
26082618
def __enter__(self) -> 'BinaryView':
26092619
return self
26102620

26112621
def __exit__(self, type, value, traceback):
2622+
self._cleanup()
26122623
self.file.close()
26132624

26142625
def __del__(self):
2615-
if core is None:
2616-
return
2617-
for i in self._notifications.values():
2618-
i._unregister()
2619-
core.BNFreeBinaryView(self.handle)
2626+
self._cleanup()
26202627

26212628
def __repr__(self):
26222629
start = self.start

0 commit comments

Comments
 (0)