From 6ac1e050bdbbd68e920f9c84aed2d6d5879017b5 Mon Sep 17 00:00:00 2001 From: Michael Davidsaver Date: Tue, 24 Mar 2015 18:44:28 -0400 Subject: [PATCH] dbCa: missing inc. ref. when scan requests are queued Missing caLinkInc() in scanComplete() drops ref. --- src/ioc/db/dbCa.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/ioc/db/dbCa.c b/src/ioc/db/dbCa.c index 984b59f13..1525bf5ab 100644 --- a/src/ioc/db/dbCa.c +++ b/src/ioc/db/dbCa.c @@ -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++;