testPlugin found bug: added unionArrayTest

This commit is contained in:
mrkraimer
2020-04-12 14:01:22 -04:00
parent ad479309b0
commit 1e62844a22
2 changed files with 73 additions and 2 deletions
+4 -1
View File
@@ -151,8 +151,10 @@ bool PVArrayFilter::filter(const PVFieldPtr & pvField,const BitSetPtr & bitSet,b
{
PVFieldPtr pvCopy = pvField;
PVScalarArrayPtr copyArray;
bool isUnion = false;
Type type = masterField->getField()->getType();
if(type==epics::pvData::union_) {
isUnion = true;
PVUnionPtr pvMasterUnion = std::tr1::static_pointer_cast<PVUnion>(masterField);
PVUnionPtr pvCopyUnion = std::tr1::static_pointer_cast<PVUnion>(pvCopy);
if(toCopy) pvCopyUnion->copy(*pvMasterUnion);
@@ -194,6 +196,7 @@ bool PVArrayFilter::filter(const PVFieldPtr & pvField,const BitSetPtr & bitSet,b
}
}
copyArray->setLength(len);
bitSet->set(pvField->getFieldOffset());
return true;
}
if (end - start >= 0) len = 1 + (end - start) / increment;
@@ -210,7 +213,7 @@ bool PVArrayFilter::filter(const PVFieldPtr & pvField,const BitSetPtr & bitSet,b
indto += increment;
}
}
masterField->postPut();
if(isUnion) masterField->postPut();
return true;
}