summaryrefslogtreecommitdiff
path: root/python/transform.py
diff options
context:
space:
mode:
authorBrian Potchik <brian@vector35.com>2025-10-28 14:52:13 -0400
committerBrian Potchik <brian@vector35.com>2025-10-28 14:52:13 -0400
commit5edc5e4b198eeaac98c1fb3b4a1a7849d357d06d (patch)
tree6cc58fc666376a3fa99be462894da120e17c8614 /python/transform.py
parent8d91951e428ed7e1878a2e3a362552f0da79d6df (diff)
Fix crash Python bindings for Transform API.
Diffstat (limited to 'python/transform.py')
-rw-r--r--python/transform.py13
1 files changed, 8 insertions, 5 deletions
diff --git a/python/transform.py b/python/transform.py
index 3168982d..8e20d04c 100644
--- a/python/transform.py
+++ b/python/transform.py
@@ -37,11 +37,14 @@ class _TransformMetaClass(type):
count = ctypes.c_ulonglong()
xforms = core.BNGetTransformTypeList(count)
assert xforms is not None, "core.BNGetTransformTypeList returned None"
- try:
- for i in range(0, count.value):
- yield Transform(xforms[i])
- finally:
- core.BNFreeTransformTypeList(xforms)
+ result = []
+ for i in range(0, count.value):
+ ptr_addr = ctypes.cast(xforms[i], ctypes.c_void_p).value
+ handle = ctypes.cast(ptr_addr, type(xforms[i]))
+ result.append(Transform(handle))
+ core.BNFreeTransformTypeList(xforms)
+ for xform in result:
+ yield xform
def __getitem__(cls, name):
binaryninja._init_plugins()