From 8efbc1d85eff0f1da1ce6b2227258faaeb737dee Mon Sep 17 00:00:00 2001 From: Marty Kraimer Date: Thu, 21 Feb 2002 13:44:29 +0000 Subject: [PATCH] lock before deleting --- src/db/dbCa.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/db/dbCa.c b/src/db/dbCa.c index 898fd9c10..9006a4e44 100644 --- a/src/db/dbCa.c +++ b/src/db/dbCa.c @@ -697,6 +697,8 @@ void dbCaTask() if(link_action&CA_DELETE) --removesOutstanding; epicsMutexUnlock(caListSem); /*Give it back immediately*/ if(link_action&CA_DELETE) {/*This must be first*/ + /* Take lock in case this runs before dbCaRemoveLink completes*/ + epicsMutexMustLock(pca->lock); if(pca->chid) ca_clear_channel(pca->chid); free(pca->pgetNative); free(pca->pputNative); @@ -704,6 +706,7 @@ void dbCaTask() free(pca->pputString); free(pca->pcaAttributes); free(pca->pvname); + epicsMutexUnlock(pca->lock); epicsMutexDestroy(pca->lock); free(pca); continue; /*No other link_action makes sense*/