From c9b7cc0ffa412331d4ffc1ccd4ac06aa93af68e9 Mon Sep 17 00:00:00 2001 From: Victor Stinner Date: Sun, 21 Mar 2010 13:37:43 +0000 Subject: [PATCH] Merged revisions 78641 via svnmerge from svn+ssh://pythondev@svn.python.org/python/trunk ........ r78641 | victor.stinner | 2010-03-04 01:10:12 +0100 (jeu., 04 mars 2010) | 3 lines Issue #7494: fix a crash in _lsprof (cProfile) after clearing the profiler, reset also the pointer to the current pointer context. ........ --- Misc/NEWS | 3 +++ Modules/_lsprof.c | 7 ++++++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/Misc/NEWS b/Misc/NEWS index ede40a8cf8..96dbd20cb6 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -21,6 +21,9 @@ Core and Builtins Library ------- +- Issue #7494: fix a crash in _lsprof (cProfile) after clearing the profiler, + reset also the pointer to the current pointer context. + - Issue #4961: Inconsistent/wrong result of askyesno function in tkMessageBox with Tcl/Tk-8.5. diff --git a/Modules/_lsprof.c b/Modules/_lsprof.c index 14bb8f93e8..8820fcf5ad 100644 --- a/Modules/_lsprof.c +++ b/Modules/_lsprof.c @@ -303,12 +303,17 @@ static void clearEntries(ProfilerObject *pObj) { RotatingTree_Enum(pObj->profilerEntries, freeEntry, NULL); pObj->profilerEntries = EMPTY_ROTATING_TREE; - /* release the memory hold by the free list of ProfilerContexts */ + /* release the memory hold by the ProfilerContexts */ + if (pObj->currentProfilerContext) { + free(pObj->currentProfilerContext); + pObj->currentProfilerContext = NULL; + } while (pObj->freelistProfilerContext) { ProfilerContext *c = pObj->freelistProfilerContext; pObj->freelistProfilerContext = c->previous; free(c); } + pObj->freelistProfilerContext = NULL; } static void -- 2.40.0