Author: Zyn Date: 2025-06-23T13:02:51-05:00 New Revision: ff865b639af05e366b108c7acb034e3d0e069376
URL: https://github.com/llvm/llvm-project/commit/ff865b639af05e366b108c7acb034e3d0e069376 DIFF: https://github.com/llvm/llvm-project/commit/ff865b639af05e366b108c7acb034e3d0e069376.diff LOG: [lldb] Fix SBMemoryRegionInfoListExtensions iter to yield unique refe… (#144815) Added: Modified: lldb/bindings/interface/SBMemoryRegionInfoListExtensions.i lldb/test/API/python_api/find_in_memory/TestFindInMemory.py Removed: ################################################################################ diff --git a/lldb/bindings/interface/SBMemoryRegionInfoListExtensions.i b/lldb/bindings/interface/SBMemoryRegionInfoListExtensions.i index 29c0179c0ffe3..f565f45880119 100644 --- a/lldb/bindings/interface/SBMemoryRegionInfoListExtensions.i +++ b/lldb/bindings/interface/SBMemoryRegionInfoListExtensions.i @@ -9,8 +9,8 @@ '''Iterate over all the memory regions in a lldb.SBMemoryRegionInfoList object.''' import lldb size = self.GetSize() - region = lldb.SBMemoryRegionInfo() for i in range(size): + region = lldb.SBMemoryRegionInfo() self.GetMemoryRegionAtIndex(i, region) yield region %} diff --git a/lldb/test/API/python_api/find_in_memory/TestFindInMemory.py b/lldb/test/API/python_api/find_in_memory/TestFindInMemory.py index 1ef37d2ec9898..74de46dee98a5 100644 --- a/lldb/test/API/python_api/find_in_memory/TestFindInMemory.py +++ b/lldb/test/API/python_api/find_in_memory/TestFindInMemory.py @@ -154,14 +154,35 @@ def test_find_in_memory_unaligned(self): self.assertEqual(addr, lldb.LLDB_INVALID_ADDRESS) def test_memory_info_list_iterable(self): - """Make sure the SBMemoryRegionInfoList is iterable""" + """Make sure the SBMemoryRegionInfoList is iterable and each yielded object is unique""" self.assertTrue(self.process, PROCESS_IS_VALID) self.assertState(self.process.GetState(), lldb.eStateStopped, PROCESS_STOPPED) info_list = self.process.GetMemoryRegions() self.assertTrue(info_list.GetSize() > 0) + + collected_info = [] try: for info in info_list: - pass + collected_info.append(info) except Exception: self.fail("SBMemoryRegionInfoList is not iterable") + + for i in range(len(collected_info)): + region = lldb.SBMemoryRegionInfo() + info_list.GetMemoryRegionAtIndex(i, region) + + self.assertEqual( + collected_info[i], + region, + f"items {i}: iterator data should match index access data", + ) + + self.assertTrue( + len(collected_info) >= 2, "Test requires at least 2 memory regions" + ) + self.assertNotEqual( + collected_info[0].GetRegionBase(), + collected_info[1].GetRegionBase(), + "Different items should have diff erent base addresses", + ) _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits