summaryrefslogtreecommitdiff
path: root/coverage/ctracer
diff options
context:
space:
mode:
Diffstat (limited to 'coverage/ctracer')
-rw-r--r--coverage/ctracer/tracer.c5
-rw-r--r--coverage/ctracer/tracer.h3
2 files changed, 5 insertions, 3 deletions
diff --git a/coverage/ctracer/tracer.c b/coverage/ctracer/tracer.c
index 01f8b19b..7d639112 100644
--- a/coverage/ctracer/tracer.c
+++ b/coverage/ctracer/tracer.c
@@ -341,7 +341,6 @@ CTracer_handle_call(CTracer *self, PyFrameObject *frame)
CFileDisposition * pdisp = NULL;
STATS( self->stats.calls++; )
- self->activity = TRUE;
/* Grow the stack. */
if (CTracer_set_pdata_stack(self) < 0) {
@@ -353,7 +352,7 @@ CTracer_handle_call(CTracer *self, PyFrameObject *frame)
self->pcur_entry = &self->pdata_stack->stack[self->pdata_stack->depth];
/* See if this frame begins a new context. */
- if (self->should_start_context && self->context == Py_None) {
+ if (self->should_start_context != Py_None && self->context == Py_None) {
PyObject * context;
/* We're looking for our context, ask should_start_context if this is the start. */
STATS( self->stats.start_context_calls++; )
@@ -866,6 +865,8 @@ CTracer_trace(CTracer *self, PyFrameObject *frame, int what, PyObject *arg_unuse
goto error;
}
+ self->activity = TRUE;
+
switch (what) {
case PyTrace_CALL:
if (CTracer_handle_call(self, frame) < 0) {
diff --git a/coverage/ctracer/tracer.h b/coverage/ctracer/tracer.h
index 61c01b41..a83742dd 100644
--- a/coverage/ctracer/tracer.h
+++ b/coverage/ctracer/tracer.h
@@ -27,7 +27,6 @@ typedef struct CTracer {
PyObject * trace_arcs;
PyObject * should_start_context;
PyObject * switch_context;
- PyObject * context;
/* Has the tracer been started? */
BOOL started;
@@ -35,6 +34,8 @@ typedef struct CTracer {
BOOL tracing_arcs;
/* Have we had any activity? */
BOOL activity;
+ /* The current dynamic context. */
+ PyObject * context;
/*
The data stack is a stack of dictionaries. Each dictionary collects