From c06f3cd9a08dc8d53d88db2248cb37c9373df232 Mon Sep 17 00:00:00 2001 From: Andrew Johnson Date: Mon, 29 Oct 2012 01:20:56 -0500 Subject: [PATCH] db: Fix dbGet so attributes and value can be fetched simultaneously Only the Async Soft Channel support did this, so that's where it was noticed that this didn't work. --- src/ioc/db/dbAccess.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/ioc/db/dbAccess.c b/src/ioc/db/dbAccess.c index 5b817c486..82aa18c11 100644 --- a/src/ioc/db/dbAccess.c +++ b/src/ioc/db/dbAccess.c @@ -829,9 +829,10 @@ long dbGet(DBADDR *paddr, short dbrType, if (nRequest) *nRequest = 1; if (!pfl || pfl->type == dbfl_type_rec) { status = dbFastGetConvertRoutine[field_type][dbrType] - (paddr->pfield, pbuffer, paddr); + (paddr->pfield, pbuf, paddr); } else { DBADDR localAddr = *paddr; /* Structure copy */ + localAddr.field_type = pfl->field_type; localAddr.field_size = pfl->field_size; localAddr.no_elements = pfl->no_elements; @@ -840,7 +841,7 @@ long dbGet(DBADDR *paddr, short dbrType, else localAddr.pfield = (char *) pfl->u.r.field; status = dbFastGetConvertRoutine[field_type][dbrType] - (localAddr.pfield, pbuffer, &localAddr); + (localAddr.pfield, pbuf, &localAddr); } } else { long n; @@ -865,9 +866,10 @@ long dbGet(DBADDR *paddr, short dbrType, if (n <= 0) { ;/*do nothing*/ } else if (!pfl || pfl->type == dbfl_type_rec) { - status = convert(paddr, pbuffer, n, no_elements, offset); + status = convert(paddr, pbuf, n, no_elements, offset); } else { DBADDR localAddr = *paddr; /* Structure copy */ + localAddr.field_type = pfl->field_type; localAddr.field_size = pfl->field_size; localAddr.no_elements = pfl->no_elements; @@ -875,7 +877,7 @@ long dbGet(DBADDR *paddr, short dbrType, localAddr.pfield = (char *) &pfl->u.v.field; else localAddr.pfield = (char *) pfl->u.r.field; - status = convert(&localAddr, pbuffer, n, no_elements, offset); + status = convert(&localAddr, pbuf, n, no_elements, offset); } } return status;