--- Begin Message ---
Marty,
There appears to be a bug in recSubArray.c (R3.12)
in the get_control_double routine.
if(paddr->pfield==psa->bptr) {
appears three times. Two of these lines should probably be
if(paddr->pfield==(void *)&psa->indx) {
if(paddr->pfield==(void *)&psa->nelm) {
Tom
-------------------------------------------------------------------------------
static long get_graphic_double(paddr,pgd)
struct dbAddr *paddr;
struct dbr_grDouble *pgd;
{
struct subArrayRecord *psa=(struct subArrayRecord *)paddr->precord;
if(paddr->pfield==psa->bptr) {
pgd->upper_disp_limit = psa->hopr;
pgd->lower_disp_limit = psa->lopr;
return(0);
}
if(paddr->pfield==(void *)&psa->indx) {
pgd->upper_disp_limit = psa->malm - 1;
pgd->lower_disp_limit = 0;
return(0);
}
if(paddr->pfield==(void *)&psa->nelm) {
pgd->upper_disp_limit = psa->malm;
pgd->lower_disp_limit = 1;
return(0);
}
recGblGetGraphicDouble(paddr,pgd);
return(0);
}
static long get_control_double(paddr,pcd)
struct dbAddr *paddr;
struct dbr_ctrlDouble *pcd;
{
struct subArrayRecord *psa=(struct subArrayRecord *)paddr->precord;
if(paddr->pfield==psa->bptr) {
pcd->upper_ctrl_limit = psa->hopr;
pcd->lower_ctrl_limit = psa->lopr;
return(0);
}
if(paddr->pfield==psa->bptr) {
pcd->upper_ctrl_limit = psa->malm - 1;
pcd->lower_ctrl_limit = 0;
return(0);
}
if(paddr->pfield==psa->bptr) {
pcd->upper_ctrl_limit = psa->malm;
pcd->lower_ctrl_limit = 1;
return(0);
}
recGblGetControlDouble(paddr,pcd);
return(0);
}
--- End Message ---