From de5f05f3b1ce9f899c65d17f1097270ca66c200a Mon Sep 17 00:00:00 2001
From: Armin Rigo <arigo@tunes.org>
Date: Tue, 6 Dec 2005 14:07:39 +0000
Subject: [PATCH] Nobody on python-dev seemed particularly bothered that
 Hotshot generates half- meaningless numbers, but I figured out I would fix
 that bug anyway.

---
 Modules/_hotshot.c | 36 ++----------------------------------
 1 file changed, 2 insertions(+), 34 deletions(-)

diff --git a/Modules/_hotshot.c b/Modules/_hotshot.c
index ddfd33655c0..5e4a9f77479 100644
--- a/Modules/_hotshot.c
+++ b/Modules/_hotshot.c
@@ -843,38 +843,6 @@ get_tdelta(ProfilerObject *self)
 
 /* The workhorse:  the profiler callback function. */
 
-static int
-profiler_callback(ProfilerObject *self, PyFrameObject *frame, int what,
-                  PyObject *arg)
-{
-    int tdelta = -1;
-    int fileno;
-
-    if (self->frametimings)
-        tdelta = get_tdelta(self);
-    switch (what) {
-    case PyTrace_CALL:
-        fileno = get_fileno(self, frame->f_code);
-        if (fileno < 0)
-            return -1;
-        if (pack_enter(self, fileno, tdelta,
-                       frame->f_code->co_firstlineno) < 0)
-            return -1;
-        break;
-    case PyTrace_RETURN:
-        if (pack_exit(self, tdelta) < 0)
-            return -1;
-        break;
-    default:
-        /* should never get here */
-        break;
-    }
-    return 0;
-}
-
-
-/* Alternate callback when we want PyTrace_LINE events */
-
 static int
 tracer_callback(ProfilerObject *self, PyFrameObject *frame, int what,
                 PyObject *arg)
@@ -893,7 +861,7 @@ tracer_callback(ProfilerObject *self, PyFrameObject *frame, int what,
     case PyTrace_RETURN:
         return pack_exit(self, get_tdelta(self));
 
-    case PyTrace_LINE:
+    case PyTrace_LINE:  /* we only get these events if we asked for them */
         if (self->linetimings)
             return pack_lineno_tdelta(self, frame->f_lineno,
 				      get_tdelta(self));
@@ -987,7 +955,7 @@ do_start(ProfilerObject *self)
     if (self->lineevents)
         PyEval_SetTrace((Py_tracefunc) tracer_callback, (PyObject *)self);
     else
-        PyEval_SetProfile((Py_tracefunc) profiler_callback, (PyObject *)self);
+        PyEval_SetProfile((Py_tracefunc) tracer_callback, (PyObject *)self);
 }
 
 static void
-- 
2.30.9