fix failing VPI callbacks the vpip_cur_task was left dangling

This commit is contained in:
Johann Klammer 2016-12-27 14:51:41 +01:00 committed by Stephen Williams
parent 6e5558e67d
commit c79df7c44b
2 changed files with 3 additions and 0 deletions

View File

@ -316,7 +316,9 @@ void sync_cb::run_run()
if (cur->cb_data.cb_rtn != 0) { if (cur->cb_data.cb_rtn != 0) {
assert(vpi_mode_flag == VPI_MODE_NONE); assert(vpi_mode_flag == VPI_MODE_NONE);
vpi_mode_flag = sync_flag? VPI_MODE_ROSYNC : VPI_MODE_RWSYNC; vpi_mode_flag = sync_flag? VPI_MODE_ROSYNC : VPI_MODE_RWSYNC;
vpip_cur_task = dynamic_cast<__vpiSysTaskCall*>(cur->cb_data.obj);
(cur->cb_data.cb_rtn)(&cur->cb_data); (cur->cb_data.cb_rtn)(&cur->cb_data);
vpip_cur_task = 0;
vpi_mode_flag = VPI_MODE_NONE; vpi_mode_flag = VPI_MODE_NONE;
} }

View File

@ -978,6 +978,7 @@ void vpip_execute_vpi_call(vthread_t thr, vpiHandle ref)
else if (sysfunc_vec4*func_vec4 = dynamic_cast<sysfunc_vec4*>(ref)) { else if (sysfunc_vec4*func_vec4 = dynamic_cast<sysfunc_vec4*>(ref)) {
vthread_push_vec4(thr, func_vec4->return_value()); vthread_push_vec4(thr, func_vec4->return_value());
} }
vpip_cur_task = 0;
} }
/* /*