diff --git a/Lib/timeit.py b/Lib/timeit.py index f2510ea2736..f45168b4452 100644 --- a/Lib/timeit.py +++ b/Lib/timeit.py @@ -191,9 +191,11 @@ class Timer: it = [None] * number gcold = gc.isenabled() gc.disable() - timing = self.inner(it, self.timer) - if gcold: - gc.enable() + try: + timing = self.inner(it, self.timer) + finally: + if gcold: + gc.enable() return timing def repeat(self, repeat=default_repeat, number=default_number): diff --git a/Misc/ACKS b/Misc/ACKS index d9185e2746c..31240999364 100644 --- a/Misc/ACKS +++ b/Misc/ACKS @@ -771,6 +771,7 @@ Chris Rebert Marc Recht John Redford Terry Reedy +Gareth Rees Steve Reeves Lennart Regebro Ofir Reichenberg diff --git a/Misc/NEWS b/Misc/NEWS index c7b36e0cf90..6ba892c4500 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -246,6 +246,9 @@ Library - Issue #12603: Fix pydoc.synopsis() on files with non-negative st_mtime. +- Issue #12514: Use try/finally to assure the timeit module restores garbage + collections when it is done. + - Issue #12607: In subprocess, fix issue where if stdin, stdout or stderr is given as a low fd, it gets overwritten.