From 739bc8d09b8957728bdbdb6effef79f0c5ec1bf9 Mon Sep 17 00:00:00 2001 From: Lee Dogeon Date: Sun, 29 Jun 2025 00:32:23 +0900 Subject: [PATCH] Avoid set changed size during iteration --- 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 75447336e4b..8ef2871c61f 100644 --- a/Lib/test/test_set.py +++ b/Lib/test/test_set.py @@ -582,8 +582,6 @@ def test_ixor(self): 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 88bbb60a040..4ec3f2cab11 100644 --- a/vm/src/builtins/set.rs +++ b/vm/src/builtins/set.rs @@ -425,8 +425,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(())