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.
........
This commit is contained in:
Victor Stinner 2010-03-04 00:29:24 +00:00
parent 45b9be52de
commit cee3ae8af6
2 changed files with 9 additions and 1 deletions

View File

@ -268,6 +268,9 @@ C-API
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