From 5e0b585556cb45e8c4b778ec44bbfd0869e54754 Mon Sep 17 00:00:00 2001 From: Ned Batchelder Date: Sat, 4 Apr 2009 22:33:39 -0400 Subject: Use a finally clause to ensure that coverage measurement is stopped no matter how the main program terminates. --- coverage/tracer.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'coverage/tracer.c') diff --git a/coverage/tracer.c b/coverage/tracer.c index cd07ded..d333eb6 100644 --- a/coverage/tracer.c +++ b/coverage/tracer.c @@ -6,6 +6,14 @@ #include "structmember.h" #include "frameobject.h" +#define DEBUG 1 + +#if DEBUG +#define IFDEBUG(x) x +#else +#define IFDEBUG(x) +#endif + // The Tracer type. typedef struct { @@ -18,6 +26,8 @@ typedef struct { int depth; // Filenames to record at each level, or NULL if not recording. PyObject * tracenames[300]; + + IFDEBUG(int nshould;) } Tracer; static int @@ -28,6 +38,7 @@ Tracer_init(Tracer *self, PyObject *args, PyObject *kwds) self->should_trace_cache = NULL; self->started = 0; self->depth = -1; + IFDEBUG(self->nshould = 0;) return 0; } @@ -70,6 +81,7 @@ Tracer_trace(Tracer *self, PyFrameObject *frame, int what, PyObject *arg) tracename = PyDict_GetItem(self->should_trace_cache, filename); if (tracename == NULL) { // We've never considered this file before. Ask should_trace about it. + IFDEBUG(self->nshould++;) PyObject * args = Py_BuildValue("(O)", filename); tracename = PyObject_Call(self->should_trace, args, NULL); Py_DECREF(args); @@ -128,6 +140,7 @@ Tracer_stop(Tracer *self, PyObject *args) PyEval_SetTrace(NULL, NULL); self->started = 0; } + IFDEBUG(printf("nshould=%d\n", self->nshould);) return Py_BuildValue(""); } -- cgit v1.2.1