From: Georg Brandl Date: Sun, 1 Aug 2010 22:02:09 +0000 (+0000) Subject: Merged revisions 83354,83365 via svnmerge from X-Git-Tag: v2.6.6rc1~88 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=c5356994edac98da01305f7664182c4a6ed57b9d;p=python Merged revisions 83354,83365 via svnmerge from svn+ssh://pythondev@svn.python.org/python/branches/release27-maint ........ r83354 | georg.brandl | 2010-07-31 21:07:37 +0200 (Sa, 31 Jul 2010) | 1 line #9328: string format methods return strings. ........ r83365 | georg.brandl | 2010-07-31 23:22:36 +0200 (Sa, 31 Jul 2010) | 1 line #1019882: if start() and stop() were not in the same stack frame, stats.load() would crash with IndexError. ........ --- diff --git a/Lib/hotshot/log.py b/Lib/hotshot/log.py index 99d0729494..b7ce259af8 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 fa6b2f1629..bc499bbfb3 100644 --- a/Lib/test/test_hotshot.py +++ b/Lib/test/test_hotshot.py @@ -10,6 +10,7 @@ import gc from test import test_support 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) diff --git a/Misc/NEWS b/Misc/NEWS index 37b143b51b..160cc2388d 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -89,6 +89,8 @@ C-API Library ------- +- Issue #1019882: Fix IndexError when loading certain hotshot stats. + - Issue #8397: Raise an error when attempting to mix iteration and regular reads on a BZ2File object, rather than returning incorrect results. diff --git a/Objects/stringobject.c b/Objects/stringobject.c index f8f6cefec7..e37b579ec5 100644 --- a/Objects/stringobject.c +++ b/Objects/stringobject.c @@ -3959,7 +3959,7 @@ string_getnewargs(PyStringObject *v) #include "stringlib/string_format.h" PyDoc_STRVAR(format__doc__, -"S.format(*args, **kwargs) -> unicode\n\ +"S.format(*args, **kwargs) -> string\n\ \n\ "); @@ -3993,7 +3993,7 @@ done: } PyDoc_STRVAR(p_format__doc__, -"S.__format__(format_spec) -> unicode\n\ +"S.__format__(format_spec) -> string\n\ \n\ ");