From ae647f85faca782700a1673a8da4ec9735023dc6 Mon Sep 17 00:00:00 2001 From: Ferdi Franceschini Date: Thu, 24 May 2007 15:29:48 +1000 Subject: [PATCH] TaskSignal sets the calling task status to WAITING to prevent recursion through TaskYield. r1982 | ffr | 2007-05-24 15:29:48 +1000 (Thu, 24 May 2007) | 2 lines --- task.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/task.c b/task.c index 235917bc..e41b99d7 100644 --- a/task.c +++ b/task.c @@ -327,12 +327,14 @@ ente: int TaskSignal(pTaskMan self, int iSignal, void *pSigData) { pTaskHead pTemp, pEnd; + int myStatus = self->pCurrent->iStatus; assert(self); assert(self->iID == TASKERID); /* Do one cycle until we are at the caller, then return to him*/ pEnd = self->pCurrent; + pEnd->iStatus = WAITING; IncrTaskPointer(self); while(self->pCurrent != pEnd) { @@ -343,6 +345,7 @@ ente: IncrTaskPointer(self); } /* finally, tell me about the thingie as well */ + pEnd->iStatus = myStatus; if(pEnd->pSignal) { pEnd->pSignal(pEnd->pData, iSignal, pSigData);