dbCa: missing inc. ref. when scan requests are queued

Missing caLinkInc() in scanComplete() drops ref.
This commit is contained in:
Michael Davidsaver
2015-03-24 18:44:28 -04:00
parent c9d889ef3e
commit 6ac1e050bd
+4 -4
View File
@@ -649,7 +649,8 @@ static void scanComplete(void *raw, dbCommon *prec)
/* another scan is queued */
if(scanOnceCallback(prec, scanComplete, raw)) {
errlogPrintf("dbCa.c failed to re-queue scanOnce\n");
}
} else
caLinkInc(pca);
}
epicsMutexUnlock(pca->lock);
caLinkDec(pca);
@@ -658,11 +659,10 @@ static void scanComplete(void *raw, dbCommon *prec)
/* must be called with pca->lock held */
static void scanLinkOnce(dbCommon *prec, caLink *pca) {
if(pca->scanningOnce==0) {
caLinkInc(pca);
if(scanOnceCallback(prec, scanComplete, pca)) {
caLinkDec(pca);
errlogPrintf("dbCa.c failed to queue scanOnce\n");
}
} else
caLinkInc(pca);
}
if(pca->scanningOnce<5)
pca->scanningOnce++;