From e7b8b42452888f2bfcd525fd16459a6d350c5d10 Mon Sep 17 00:00:00 2001 From: Marty Kraimer Date: Wed, 8 Mar 1995 13:48:38 +0000 Subject: [PATCH] Make sure errInit is called before epicsPrintf or errPrintf execute --- src/libCom/errPrintfVX.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/libCom/errPrintfVX.c b/src/libCom/errPrintfVX.c index b077b4cd8..26ff89b57 100644 --- a/src/libCom/errPrintfVX.c +++ b/src/libCom/errPrintfVX.c @@ -36,6 +36,7 @@ #include #include +#include #include #include #include @@ -81,12 +82,11 @@ LOCAL struct { int printfStatus; }pvtData; -LOCAL int errInitFirstTime=TRUE; +LOCAL int errInitFlag=0; void errInit(void) { - if(!errInitFirstTime) return; - errInitFirstTime = FALSE; + if(!vxTas(&errInitFlag)) return; pvtData.oldtaskid = 0; if((clientWaitForTask=semBCreate(SEM_Q_FIFO,SEM_EMPTY))==NULL) logMsg("semBcreate failed in errInit",0,0,0,0,0,0); @@ -140,6 +140,7 @@ void errPrintf(long status, const char *pFileName, va_end (pvar); return; } + errInit(); va_start (pvar, pformat); if(semTake(clientWaitForTask,WAIT_FOREVER)!=OK) { logMsg("epicsPrint: semTake returned error\n",0,0,0,0,0,0); @@ -222,6 +223,7 @@ int epicsVprintf(const char *pformat, va_list pvar) va_end (pvar); return status; } + errInit(); if(semTake(clientWaitForTask,WAIT_FOREVER)!=OK) { logMsg("epicsPrint: semTake returned error\n",0,0,0,0,0,0); taskSuspend(taskIdSelf());