From 8589b55203597bcb408fb81a5eca08ded5f7e5ec Mon Sep 17 00:00:00 2001 From: Lee Dogeon Date: Sun, 29 Jun 2025 02:14:22 +0900 Subject: [PATCH] Avoid set changed size during iteration (#5860) --- Lib/test/test_set.py | 2 -- vm/src/builtins/set.rs | 5 +++-- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/Lib/test/test_set.py b/Lib/test/test_set.py index 75447336e..8ef2871c6 100644 --- a/Lib/test/test_set.py +++ b/Lib/test/test_set.py @@ -582,8 +582,6 @@ class TestSet(TestJointOps, unittest.TestCase): else: self.assertNotIn(c, self.s) - # TODO: RUSTPYTHON - @unittest.expectedFailure def test_inplace_on_self(self): t = self.s.copy() t |= t diff --git a/vm/src/builtins/set.rs b/vm/src/builtins/set.rs index e10c2b2d8..8a71378f4 100644 --- a/vm/src/builtins/set.rs +++ b/vm/src/builtins/set.rs @@ -426,8 +426,9 @@ impl PySetInner { vm: &VirtualMachine, ) -> PyResult<()> { for iterable in others { - for item in iterable.iter(vm)? { - self.content.delete_if_exists(vm, &*item?)?; + let items = iterable.iter(vm)?.collect::, _>>()?; + for item in items { + self.content.delete_if_exists(vm, &*item)?; } } Ok(())