diff --git a/include/pocketpy/pocketpy.h b/include/pocketpy/pocketpy.h index 14652041..547af499 100644 --- a/include/pocketpy/pocketpy.h +++ b/include/pocketpy/pocketpy.h @@ -107,7 +107,7 @@ PK_API void py_setvmctx(void* ctx); /// Set `sys.argv`. Used for storing command-line arguments. PK_API void py_sys_setargv(int argc, char** argv); /// Set the trace function for the current VM. -PK_API void py_sys_settrace(py_TraceFunc func); +PK_API void py_sys_settrace(py_TraceFunc func, bool reset); /// Setup the callbacks for the current VM. PK_API py_Callbacks* py_callbacks(); diff --git a/src/interpreter/ceval.c b/src/interpreter/ceval.c index 328a8377..cbd789f3 100644 --- a/src/interpreter/ceval.c +++ b/src/interpreter/ceval.c @@ -1454,9 +1454,10 @@ static bool stack_format_object(VM* self, c11_sv spec) { #undef INSERT_THIRD #undef vectorcall_opcall -void py_sys_settrace(py_TraceFunc func) { +void py_sys_settrace(py_TraceFunc func, bool reset) { TraceInfo* info = &pk_current_vm->trace_info; info->func = func; + if(!reset) return; if(info->prev_loc.src) { PK_DECREF(info->prev_loc.src); info->prev_loc.src = NULL; diff --git a/src2/main.c b/src2/main.c index 3de7e2c4..9bae6141 100644 --- a/src2/main.c +++ b/src2/main.c @@ -95,7 +95,7 @@ int main(int argc, char** argv) { py_initialize(); py_sys_setargv(argc, argv); - if(trace) py_sys_settrace(tracefunc); + if(trace) py_sys_settrace(tracefunc, true); if(filename == NULL) { printf("pocketpy " PK_VERSION " (" __DATE__ ", " __TIME__ ") ");