]> granicus.if.org Git - python/commitdiff
Merged revisions 78642 via svnmerge from
authorVictor Stinner <victor.stinner@haypocalc.com>
Thu, 4 Mar 2010 00:33:35 +0000 (00:33 +0000)
committerVictor Stinner <victor.stinner@haypocalc.com>
Thu, 4 Mar 2010 00:33:35 +0000 (00:33 +0000)
svn+ssh://pythondev@svn.python.org/python/branches/py3k

................
  r78642 | victor.stinner | 2010-03-04 01:29:24 +0100 (jeu., 04 mars 2010) | 10 lines

  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
Modules/_lsprof.c

index 9bc7f613759ab91a94d3272d1d5f0b57d716f80c..3e75f2218b689e0e1c83790a892259f59992977b 100644 (file)
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -100,6 +100,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 #7250: Fix info leak of os.environ across multi-run uses of
   wsgiref.handlers.CGIHandler.
 
index 43cb9b12423fed1eac2e1b996c66efb505b02a88..a4951c033b5785e7ab4caacf27af8aeb28199274 100644 (file)
@@ -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