From d5f15cc005c0eed171d8e09356d298060dc5c98c Mon Sep 17 00:00:00 2001 From: Brian Potchik Date: Thu, 17 Sep 2020 16:55:07 -0400 Subject: Fix get_next_data_var_after when handling auto data variables shadowed by user data variables, again. --- python/binaryview.py | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) (limited to 'python') 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): >>> """ - 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): -- cgit v1.3.1