diff options
author | Ned Batchelder <ned@nedbatchelder.com> | 2009-04-04 22:33:39 -0400 |
---|---|---|
committer | Ned Batchelder <ned@nedbatchelder.com> | 2009-04-04 22:33:39 -0400 |
commit | 5e0b585556cb45e8c4b778ec44bbfd0869e54754 (patch) | |
tree | c07a18046e30b7ac70414a3659ed21f9da96e931 /coverage/tracer.c | |
parent | 8e10539cb9100f0bbebd37d72be9ea6e7e72a022 (diff) | |
download | python-coveragepy-5e0b585556cb45e8c4b778ec44bbfd0869e54754.tar.gz |
Use a finally clause to ensure that coverage measurement is stopped no matter how the main program terminates.
Diffstat (limited to 'coverage/tracer.c')
-rw-r--r-- | coverage/tracer.c | 13 |
1 files changed, 13 insertions, 0 deletions
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("");
}
|