From ef7399159cc9d6213881f13762854fd0285a6ba8 Mon Sep 17 00:00:00 2001 From: Andrew Johnson Date: Mon, 10 Aug 2015 15:03:48 -0500 Subject: [PATCH] dbAccess: Make dbPut() always do special processing after put If the value gets rejected by a put to SCAN, we must still call dbPutSpecial() to add the record back onto its old scan thread. --- src/db/dbAccess.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/db/dbAccess.c b/src/db/dbAccess.c index 068e59bd4..871c97d3d 100644 --- a/src/db/dbAccess.c +++ b/src/db/dbAccess.c @@ -1460,14 +1460,16 @@ long epicsShareAPI dbPut(DBADDR *paddr, short dbrType, status = prset->put_array_info(paddr, nRequest); } } - if (status) return status; - /* check if special processing is required */ + /* Always do special processing if needed */ if (special) { - status = dbPutSpecial(paddr,1); - if (status) return status; + long status2 = dbPutSpecial(paddr,1); + if (status2) return status2; } + /* If the put failed, return the error */ + if (status) return status; + /* Propagate monitor events for this field, */ /* unless the field field is VAL and PP is true. */ pfldDes = paddr->pfldDes;