fix failing VPI callbacks the vpip_cur_task was left dangling
This commit is contained in:
parent
6e5558e67d
commit
c79df7c44b
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue