From 3bb8536494e536faa9db54dccef31126b06d6465 Mon Sep 17 00:00:00 2001 From: Michael Davidsaver Date: Mon, 15 Sep 2014 11:42:38 -0400 Subject: [PATCH] dbAccess: dbPut() handle changing BPTR Forgot to update dbPut(), oops... --- src/ioc/db/dbAccess.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/ioc/db/dbAccess.c b/src/ioc/db/dbAccess.c index bf0f00dec..3a0e98bdb 100644 --- a/src/ioc/db/dbAccess.c +++ b/src/ioc/db/dbAccess.c @@ -1150,6 +1150,7 @@ long dbPut(DBADDR *paddr, short dbrType, short field_type = paddr->field_type; long no_elements = paddr->no_elements; long special = paddr->special; + void *pfieldsave = paddr->pfield; long status = 0; dbFldDes *pfldDes; int isValueField; @@ -1186,6 +1187,7 @@ long dbPut(DBADDR *paddr, short dbrType, long dummy; status = prset->get_array_info(paddr, &dummy, &offset); + /* paddr->pfield may be modified */ } if (no_elements < nRequest) nRequest = no_elements; if (!status) @@ -1199,12 +1201,12 @@ long dbPut(DBADDR *paddr, short dbrType, status = prset->put_array_info(paddr, nRequest); } } - if (status) return status; + if (status) goto done; /* check if special processing is required */ if (special) { status = dbPutSpecial(paddr,1); - if (status) return status; + if (status) goto done; } /* Propagate monitor events for this field, */ @@ -1214,14 +1216,15 @@ long dbPut(DBADDR *paddr, short dbrType, if (isValueField) precord->udf = FALSE; if (precord->mlis.count && !(isValueField && pfldDes->process_passive)) - db_post_events(precord, paddr->pfield, DBE_VALUE | DBE_LOG); + db_post_events(precord, pfieldsave, DBE_VALUE | DBE_LOG); /* If this field is a property (metadata) field, * then post a property change event (even if the field * didn't change). */ if (precord->mlis.count && pfldDes->prop) db_post_events(precord, NULL, DBE_PROPERTY); - +done: + paddr->pfield = pfieldsave; return status; }