summaryrefslogtreecommitdiff
path: root/python/function.py
diff options
context:
space:
mode:
authorPeter LaFosse <peter@vector35.com>2022-02-17 13:57:00 -0500
committerPeter LaFosse <peter@vector35.com>2022-02-17 13:57:00 -0500
commitab82f6fa2a79bb5dab8d7e9bc1b55d6cf0d7ad4b (patch)
treeab70851a7d846c6542f6642e4c2e3be4c8990a76 /python/function.py
parent3c20567d78c534b6e20eb7e8a31ef06a21a4b157 (diff)
Fix some minor correctness issues with function.py
Diffstat (limited to 'python/function.py')
-rw-r--r--python/function.py20
1 files changed, 13 insertions, 7 deletions
diff --git a/python/function.py b/python/function.py
index a9995b0f..fbaa2b96 100644
--- a/python/function.py
+++ b/python/function.py
@@ -896,6 +896,11 @@ class Function:
return mediumlevelil.MediumLevelILFunction(self.arch, core.BNGetFunctionMappedMediumLevelIL(self.handle), self)
@property
+ def mapped_medium_level_il(self) -> 'mediumlevelil.MediumLevelILFunction':
+ """Function mapped medium level IL (read-only)"""
+ return self.mmlil
+
+ @property
def mmlil_if_available(self) -> Optional['mediumlevelil.MediumLevelILFunction']:
"""Function mapped medium level IL, or None if not loaded (read-only)"""
result = core.BNGetFunctionMappedMediumLevelILIfAvailable(self.handle)
@@ -1066,7 +1071,7 @@ class Function:
type_conf.confidence = 0
elif isinstance(value, str):
(value, _) = self.view.parse_type_string(value)
- type_conf.type = value
+ type_conf.type = value.handle
type_conf.confidence = core.max_confidence
else:
type_conf.type = value.handle
@@ -1078,12 +1083,13 @@ class Function:
"""Registers that are used for the return value"""
result = core.BNGetFunctionReturnRegisters(self.handle)
assert result is not None, "core.BNGetFunctionReturnRegisters returned None"
- reg_set = []
- for i in range(0, result.count):
- reg_set.append(self.arch.get_reg_name(result.regs[i]))
- regs = types.RegisterSet(reg_set, confidence=result.confidence)
- core.BNFreeRegisterSet(result)
- return regs
+ try:
+ reg_set = []
+ for i in range(result.count):
+ reg_set.append(self.arch.get_reg_name(result.regs[i]))
+ return types.RegisterSet(reg_set, confidence=result.confidence)
+ finally:
+ core.BNFreeRegisterSet(result)
@return_regs.setter
def return_regs(self, value: Union['types.RegisterSet', List['architecture.RegisterType']]) -> None: # type: ignore