diff --git a/fourmess.c b/fourmess.c index 20bf2e73..c4f0964f 100644 --- a/fourmess.c +++ b/fourmess.c @@ -811,6 +811,21 @@ static int GenInconsumerate(pSICSOBJ self, SConnection * pCon, SCPrintf(pCon,eLog, "%d of %d input reflections processed", i, startCount); } } + /* + add satellites of 0,0,0, + */ + for(i = 0; i < 3; i++){ + hkl[i] = 0. + qvec[i]; + } + AddRefIdx(priv->messList, hkl); + iGen++; + for(i = 0; i < 3; i++){ + hkl[i] = 0. - qvec[i]; + } + if(FindHKL(priv->messList, hkl[0], hkl[1], hkl[2]) == NULL){ + AddRefIdx(priv->messList, hkl); + iGen++; + } SCPrintf(pCon, eValue, "%d additional inconsumerate reflections generated", iGen); return 1; diff --git a/interface.c b/interface.c index 4cb59ea9..9e3a6efe 100644 --- a/interface.c +++ b/interface.c @@ -241,6 +241,8 @@ static int DriveTaskFunc(void *data) } if(status == HWFault){ taskData->pDriv->iErrorCount++; + } else { + taskData->pDriv->iErrorCount = 0; } if(status == HWFault || status == HWPosFault){ SetDevexecStatus(pServ->pExecutor,DEVERROR); diff --git a/task.c b/task.c index 20fb1380..e2bc4094 100644 --- a/task.c +++ b/task.c @@ -214,22 +214,28 @@ static pTaskHead MakeTaskHead(char *name, TaskFunc pTask, SignalFunc pSignal, static void DeleteTaskHead(pTaskHead self) { assert(self); + void *pData; - if (self->pKill) { - if (self->pData) { - self->pKill(self->pData); - } - } - if(self->name != NULL){ - free(self->name); - } - /* unlink */ + /* unlink first to prevent double handling when Kill calls Yield*/ if (self->pPrevious != NULL) { self->pPrevious->pNext = self->pNext; } if (self->pNext != NULL) { self->pNext->pPrevious = self->pPrevious; } + + + if (self->pKill) { + if (self->pData) { + pData = self->pData; + self->pData = NULL; + self->pKill(pData); + } + } + if(self->name != NULL){ + free(self->name); + } + memset(self,0,sizeof(TaskHead)); free(self); }