fix bug related to PVStructurePtr createPVStructure(

StringArray const & fieldNames,PVFieldPtrArray const & pvFields);
The old implementation created a new version of each element of pvField.
The new version uses the version from pvFields.
There is a new shared pointer but the new shared pointer referenced the
same PVField as the original.
This commit is contained in:
Marty Kraimer
2012-09-28 06:33:39 -04:00
parent 6a378dae0d
commit a23631a8ca
4 changed files with 3692 additions and 70 deletions
+3 -5
View File
@@ -72,14 +72,12 @@ PVStructure::PVStructure(StructureConstPtr const & structurePtr,
{
size_t numberFields = structurePtr->getNumberFields();
StringArray fieldNames = structurePtr->getFieldNames();
PVFieldPtrArray * xxx = const_cast<PVFieldPtrArray *>(&pvFields);
xxx->reserve(numberFields);
PVDataCreatePtr pvDataCreate = getPVDataCreate();
pvFields.reserve(numberFields);
for(size_t i=0; i<numberFields; i++) {
xxx->push_back(pvDataCreate->createPVField(pvs[i]->getField()));
pvFields.push_back(pvs[i]);
}
for(size_t i=0; i<numberFields; i++) {
(*xxx)[i]->setParentAndName(this,fieldNames[i]);
pvFields[i]->setParentAndName(this,fieldNames[i]);
}
}