diff options
Diffstat (limited to 'vm_trace.c')
-rw-r--r-- | vm_trace.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/vm_trace.c b/vm_trace.c index 9186983e28..f8fc829fc4 100644 --- a/vm_trace.c +++ b/vm_trace.c @@ -333,7 +333,8 @@ rb_suppress_tracing(VALUE (*func)(VALUE), VALUE arg) const int vm_tracing = th->vm->trace_running; const int tracing = th->trace_running; - th->vm->trace_running = 1; + if(!tracing) + th->vm->trace_running++; th->trace_running = 1; raised = rb_threadptr_reset_raised(th); outer_state = th->state; @@ -349,7 +350,8 @@ rb_suppress_tracing(VALUE (*func)(VALUE), VALUE arg) rb_threadptr_set_raised(th); } th->trace_running = tracing; - th->vm->trace_running = vm_tracing; + if(!tracing) + th->vm->trace_running--; if (state) { JUMP_TAG(state); |