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 | 694816ca8df338325a1e28f5d4564324ccb31a7a (patch) | |
tree | fd259c4a3b43914793ccf59e05af749fcfba6a54 /coverage/tracer.c | |
parent | 8e10aa1d04b979e7a6b026c8be8d22f8689299ce (diff) | |
download | python-coveragepy-git-694816ca8df338325a1e28f5d4564324ccb31a7a.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 cd07ded2..d333eb65 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("");
}
|