From adb5c9533c33013f6168e3b44b9995987419d967 Mon Sep 17 00:00:00 2001 From: Godzilaa Date: Thu, 14 May 2026 23:49:27 +0530 Subject: [PATCH] gh-149015: Fix iterate-and-delete issue in Bdb.clear_all_file_breaks When multiple breakpoints share the same line, iterating over blist while calling bp.deleteMe() (which mutates blist) causes alternate elements to be skipped, leaving orphan breakpoints. This is a one-character fix: add [:] to create a copy before iterating, matching the existing defensive pattern in clear_break() at line 722. --- Lib/bdb.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Lib/bdb.py b/Lib/bdb.py index 50cf2b3f5b3e45..0ed8379bac8c1b 100644 --- a/Lib/bdb.py +++ b/Lib/bdb.py @@ -747,7 +747,7 @@ def clear_all_file_breaks(self, filename): return 'There are no breakpoints in %s' % filename for line in self.breaks[filename]: blist = Breakpoint.bplist[filename, line] - for bp in blist: + for bp in blist[:]: bp.deleteMe() del self.breaks[filename] return None