TRACE_msg_process_end(smx_proc);
#endif
// free the data if a function was provided
- if (msg_proc->data && msg_global->process_data_cleanup) {
+ if (msg_proc && msg_proc->data && msg_global->process_data_cleanup) {
msg_global->process_data_cleanup(msg_proc->data);
}
// remove the process from its virtual machine
- if (msg_proc->vm) {
+ if (msg_proc && msg_proc->vm) {
int pos = xbt_dynar_search(msg_proc->vm->processes,&smx_proc);
xbt_dynar_remove_at(msg_proc->vm->processes,pos, NULL);
}