Defensive programming: make sure that a process is actually running before we try to kill it.
This commit is contained in:
parent
37a4200f40
commit
06123fefe2
@ -28,7 +28,7 @@
|
||||
*
|
||||
* This file is part of the Contiki operating system.
|
||||
*
|
||||
* @(#)$Id: process.c,v 1.11 2010/09/14 18:55:04 dak664 Exp $
|
||||
* @(#)$Id: process.c,v 1.12 2010/10/20 22:24:46 adamdunkels Exp $
|
||||
*/
|
||||
|
||||
/**
|
||||
@ -129,6 +129,13 @@ exit_process(struct process *p, struct process *fromprocess)
|
||||
|
||||
PRINTF("process: exit_process '%s'\n", PROCESS_NAME_STRING(p));
|
||||
|
||||
/* Make sure the process is in the process list before we try to
|
||||
exit it. */
|
||||
for(q = process_list; q != p && q != NULL; q = q->next);
|
||||
if(q == NULL) {
|
||||
return;
|
||||
}
|
||||
|
||||
if(process_is_running(p)) {
|
||||
/* Process was running */
|
||||
p->state = PROCESS_STATE_NONE;
|
||||
@ -150,7 +157,7 @@ exit_process(struct process *p, struct process *fromprocess)
|
||||
p->thread(&p->pt, PROCESS_EVENT_EXIT, NULL);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if(p == process_list) {
|
||||
process_list = process_list->next;
|
||||
} else {
|
||||
|
Loading…
Reference in New Issue
Block a user