diff options
-rw-r--r-- | Lib/hotshot/log.py | 5 | ||||
-rw-r--r-- | Lib/test/test_hotshot.py | 14 | ||||
-rw-r--r-- | Misc/NEWS | 2 |
3 files changed, 20 insertions, 1 deletions
diff --git a/Lib/hotshot/log.py b/Lib/hotshot/log.py index 47c932a..17e8b50 100644 --- a/Lib/hotshot/log.py +++ b/Lib/hotshot/log.py @@ -106,7 +106,10 @@ class LogReader: return what, t, tdelta if what == WHAT_EXIT: - return what, self._pop(), tdelta + try: + return what, self._pop(), tdelta + except IndexError: + raise StopIteration if what == WHAT_LINENO: filename, firstlineno, funcname = self._stack[-1] diff --git a/Lib/test/test_hotshot.py b/Lib/test/test_hotshot.py index c6dae36..7da9746 100644 --- a/Lib/test/test_hotshot.py +++ b/Lib/test/test_hotshot.py @@ -10,6 +10,7 @@ from test import test_support # Silence Py3k warning hotshot = test_support.import_module('hotshot', deprecated=True) from hotshot.log import ENTER, EXIT, LINE +from hotshot import stats def shortfilename(fn): @@ -136,6 +137,19 @@ class HotShotTestCase(unittest.TestCase): emptyfile.close() gc.collect() + def test_load_stats(self): + def start(prof): + prof.start() + # Make sure stats can be loaded when start and stop of profiler + # are not executed in the same stack frame. + profiler = self.new_profiler() + start(profiler) + profiler.stop() + profiler.close() + stats.load(self.logfn) + os.unlink(self.logfn) + + def test_main(): test_support.run_unittest(HotShotTestCase) @@ -64,6 +64,8 @@ Library Extension Modules ----------------- +- Issue #1019882: Fix IndexError when loading certain hotshot stats. + - Issue #9422: Fix memory leak when re-initializing a struct.Struct object. - Issue #7900: The getgroups(2) system call on MacOSX behaves rather oddly |