diff --git a/pvtoolsSrc/pvutils.h b/pvtoolsSrc/pvutils.h index ae6431f..748f7a2 100644 --- a/pvtoolsSrc/pvutils.h +++ b/pvtoolsSrc/pvutils.h @@ -204,7 +204,10 @@ operator<<(pvutil_ostream& o, const epics::pvData::PVStructureArray::shared_poin epics::pvData::PVStructureArray::const_svector data(value->view()); for (size_t i = 0; i < length; i++) - o << data[i]; + if (data[i].get() == NULL) + o << epics::pvData::format::indent() << "(none)" << std::endl; + else + o << data[i]; } return o; @@ -223,7 +226,10 @@ operator<<(pvutil_ostream& o, const epics::pvData::PVUnionArray::shared_pointer epics::pvData::PVUnionArray::const_svector data(value->view()); for (size_t i = 0; i < length; i++) - o << data[i]; + if (data[i].get() == NULL) + o << epics::pvData::format::indent() << "(none)" << std::endl; + else + o << data[i]; } return o; diff --git a/testApp/remote/testServer.cpp b/testApp/remote/testServer.cpp index 4d5be06..73a850a 100644 --- a/testApp/remote/testServer.cpp +++ b/testApp/remote/testServer.cpp @@ -2283,6 +2283,20 @@ protected: m_pvStructure = getPVDataCreate()->createPVStructure(s); m_pvStructure->getSubField("value")->setLength(8); } + else if (m_name == "testStructureArray" ) + { + epics::pvData::StructureConstPtr s = + getFieldCreate()->createFieldBuilder()-> + add("value", getFieldCreate()->createStructureArray(getStandardField()->alarm()))-> + createStructure(); + m_pvStructure = getPVDataCreate()->createPVStructure(s); + + PVStructureArray::svector data(5); + data[1] = getPVDataCreate()->createPVStructure(getStandardField()->alarm()); + data[4] = getPVDataCreate()->createPVStructure(getStandardField()->alarm()); + + m_pvStructure->getSubField("value")->replace(freeze(data)); + } else { string allProperties("alarm,timeStamp,display,control,valueAlarm");