get up to date with master
This commit is contained in:
mrkraimer
2017-08-16 10:15:49 -04:00
2 changed files with 15 additions and 5 deletions

View File

@@ -105,11 +105,11 @@ std::ostream& terse(std::ostream& o, PVField::shared_pointer const & pv)
std::ostream& printEnumT(std::ostream& o, epics::pvData::PVStructure const & pvEnumT)
{
PVInt::shared_pointer pvIndex = pvEnumT.getSubField<PVInt>("index");
PVInt::const_shared_pointer pvIndex = pvEnumT.getSubField<PVInt>("index");
if (!pvIndex)
throw std::runtime_error("enum_t structure does not have 'int index' field");
PVStringArray::shared_pointer pvChoices = pvEnumT.getSubField<PVStringArray>("choices");
PVStringArray::const_shared_pointer pvChoices = pvEnumT.getSubField<PVStringArray>("choices");
if (!pvChoices)
throw std::runtime_error("enum_t structure does not have 'string choices[]' field");

View File

@@ -3912,15 +3912,25 @@ public:
m_needSubscriptionUpdate = true;
// make a copy so that ResponseRequest::reportStatus() can
// remove itself from m_responseRequests
size_t count = 0;
std::vector<ResponseRequest::weak_pointer> rrs(m_responseRequests.size());
for (IOIDResponseRequestMap::iterator iter = m_responseRequests.begin();
iter != m_responseRequests.end();
iter++)
{
ResponseRequest::shared_pointer ptr(iter->second.lock());
if(ptr)
EXCEPTION_GUARD(ptr->reportStatus(state));
rrs[count++] = iter->second;
}
ResponseRequest::shared_pointer ptr;
for (size_t i = 0; i< count; i++)
{
if((ptr = rrs[i].lock()))
{
EXCEPTION_GUARD(ptr->reportStatus(state));
}
}
}
/**