Patches for max array size determination as suggested by Malcolm Waters (Diamond).
This commit is contained in:
@@ -167,11 +167,14 @@ int caget (pv *pvs, int nPvs, RequestT request, OutputT format,
|
||||
}
|
||||
}
|
||||
/* Adjust array count */
|
||||
if (reqElems == 0 || pvs[n].nElems < reqElems)
|
||||
reqElems = pvs[n].nElems;
|
||||
/* Remember dbrType and reqElems */
|
||||
if (reqElems == 0 || pvs[n].nElems < reqElems){
|
||||
pvs[n].reqElems = pvs[n].nElems; /* Use full number of points */
|
||||
} else {
|
||||
pvs[n].reqElems = reqElems; /* Limit to specified number */
|
||||
}
|
||||
|
||||
/* Remember dbrType */
|
||||
pvs[n].dbrType = dbrType;
|
||||
pvs[n].reqElems = reqElems;
|
||||
|
||||
/* Issue CA request */
|
||||
/* ---------------- */
|
||||
@@ -183,15 +186,15 @@ int caget (pv *pvs, int nPvs, RequestT request, OutputT format,
|
||||
if (request == callback)
|
||||
{ /* Event handler will allocate value */
|
||||
result = ca_array_get_callback(dbrType,
|
||||
reqElems,
|
||||
pvs[n].reqElems,
|
||||
pvs[n].chid,
|
||||
event_handler,
|
||||
(void*)&pvs[n]);
|
||||
} else {
|
||||
/* Allocate value structure */
|
||||
pvs[n].value = calloc(1, dbr_size_n(dbrType, reqElems));
|
||||
pvs[n].value = calloc(1, dbr_size_n(dbrType, pvs[n].reqElems));
|
||||
result = ca_array_get(dbrType,
|
||||
reqElems,
|
||||
pvs[n].reqElems,
|
||||
pvs[n].chid,
|
||||
pvs[n].value);
|
||||
}
|
||||
|
||||
@@ -131,11 +131,14 @@ void connection_handler ( struct connection_handler_args args )
|
||||
dbrType = DBR_TIME_STRING;
|
||||
}
|
||||
/* Adjust array count */
|
||||
if (reqElems == 0 || ppv->nElems < reqElems)
|
||||
reqElems = ppv->nElems;
|
||||
/* Remember dbrType and reqElems */
|
||||
if (reqElems == 0 || ppv->nElems < reqElems){
|
||||
ppv->reqElems = ppv->nElems; /* Use full number of points */
|
||||
} else {
|
||||
ppv->reqElems = reqElems; /* Limit to specified number */
|
||||
}
|
||||
|
||||
/* Remember dbrType */
|
||||
ppv->dbrType = dbrType;
|
||||
ppv->reqElems = reqElems;
|
||||
|
||||
ppv->onceConnected = 1;
|
||||
nConn++;
|
||||
@@ -144,10 +147,10 @@ void connection_handler ( struct connection_handler_args args )
|
||||
/* install monitor once with first connect */
|
||||
if ( ! ppv->value ) {
|
||||
/* Allocate value structure */
|
||||
ppv->value = calloc(1, dbr_size_n(dbrType, reqElems));
|
||||
ppv->value = calloc(1, dbr_size_n(dbrType, ppv->reqElems));
|
||||
if ( ppv->value ) {
|
||||
ppv->status = ca_create_subscription(dbrType,
|
||||
reqElems,
|
||||
ppv->reqElems,
|
||||
ppv->chid,
|
||||
eventMask,
|
||||
event_handler,
|
||||
|
||||
Reference in New Issue
Block a user