Issue #7494: fix a crash in _lsprof (cProfile) after clearing the profiler,

reset also the pointer to the current pointer context.
This commit is contained in:
Victor Stinner 2010-03-04 00:10:12 +00:00
parent 71fb87e64c
commit 56a5153e21
2 changed files with 9 additions and 1 deletions

View File

@ -41,6 +41,9 @@ Core and Builtins
Library Library
------- -------
- Issue #7494: fix a crash in _lsprof (cProfile) after clearing the profiler,
reset also the pointer to the current pointer context.
- Issue #7232: Add support for the context manager protocol to the TarFile - Issue #7232: Add support for the context manager protocol to the TarFile
class. class.

View File

@ -303,12 +303,17 @@ static void clearEntries(ProfilerObject *pObj)
{ {
RotatingTree_Enum(pObj->profilerEntries, freeEntry, NULL); RotatingTree_Enum(pObj->profilerEntries, freeEntry, NULL);
pObj->profilerEntries = EMPTY_ROTATING_TREE; 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) { while (pObj->freelistProfilerContext) {
ProfilerContext *c = pObj->freelistProfilerContext; ProfilerContext *c = pObj->freelistProfilerContext;
pObj->freelistProfilerContext = c->previous; pObj->freelistProfilerContext = c->previous;
free(c); free(c);
} }
pObj->freelistProfilerContext = NULL;
} }
static void static void