summaryrefslogtreecommitdiff
path: root/python/binaryview.py
diff options
context:
space:
mode:
Diffstat (limited to 'python/binaryview.py')
-rw-r--r--python/binaryview.py18
1 files changed, 10 insertions, 8 deletions
diff --git a/python/binaryview.py b/python/binaryview.py
index 5b83b01f..49c7c788 100644
--- a/python/binaryview.py
+++ b/python/binaryview.py
@@ -4340,15 +4340,17 @@ class BinaryView(object):
<var 0x1000003c: int32_t>
>>>
"""
- next_data_var_start = core.BNGetNextDataVariableStartAfterAddress(self.handle, addr)
- if next_data_var_start == self.end:
- return None
- var = core.BNDataVariable()
- if not core.BNGetDataVariableAtAddress(self.handle, next_data_var_start, var):
- return None
- if var.address < next_data_var_start:
- if not core.BNGetDataVariableAtAddress(self.handle, var.address + core.BNGetTypeWidth(var.type), var):
+ while True:
+ next_data_var_start = core.BNGetNextDataVariableStartAfterAddress(self.handle, addr)
+ if next_data_var_start == self.end:
+ return None
+ var = core.BNDataVariable()
+ if not core.BNGetDataVariableAtAddress(self.handle, next_data_var_start, var):
return None
+ if var.address < next_data_var_start:
+ addr = var.address + core.BNGetTypeWidth(var.type)
+ continue
+ break
return DataVariable(var.address, types.Type(var.type, platform = self.platform, confidence = var.typeConfidence), var.autoDiscovered, self)
def get_next_data_var_start_after(self, addr):