https://github.com/zyn-li updated https://github.com/llvm/llvm-project/pull/144815
>From 2054114501b9de9ab54d220448066660607fd12d Mon Sep 17 00:00:00 2001 From: Zhiyuan Li <zy...@meta.com> Date: Wed, 18 Jun 2025 16:49:12 -0700 Subject: [PATCH] [lldb] Fix SBMemoryRegionInfoListExtensions iter to yield unique references --- .../SBMemoryRegionInfoListExtensions.i | 2 +- .../find_in_memory/TestFindInMemory.py | 23 +++++++++++++++++-- 2 files changed, 22 insertions(+), 3 deletions(-) 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..d61fdb16e2a02 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,33 @@ 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", + ) + + if len(collected_info) >= 2: + self.assertNotEqual( + collected_info[0].GetRegionBase(), + collected_info[1].GetRegionBase(), + "Different items should have different base addresses", + ) _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits