From 5019969d8ae5ebcc66c550e1026e36df28ad69fa Mon Sep 17 00:00:00 2001 From: Michael Davidsaver Date: Wed, 6 Jan 2016 12:13:50 -0500 Subject: [PATCH] getSubField -> getSubFieldT to avoid potential NULL de-ref. --- src/ca/caChannel.cpp | 104 ++++++++++++++++---------------- src/remote/security.cpp | 4 +- src/server/responseHandlers.cpp | 14 ++--- 3 files changed, 61 insertions(+), 61 deletions(-) diff --git a/src/ca/caChannel.cpp b/src/ca/caChannel.cpp index 6c2e132..eb336f2 100644 --- a/src/ca/caChannel.cpp +++ b/src/ca/caChannel.cpp @@ -563,12 +563,12 @@ void copy_DBR(const void * dbr, unsigned count, PVStructure::shared_pointer cons { if (count == 1) { - std::tr1::shared_ptr value = std::tr1::static_pointer_cast(pvStructure->getSubField("value")); + std::tr1::shared_ptr value = std::tr1::static_pointer_cast(pvStructure->getSubFieldT("value")); value->put(static_cast(dbr)[0]); } else { - std::tr1::shared_ptr value = pvStructure->getSubField("value"); + std::tr1::shared_ptr value = pvStructure->getSubFieldT("value"); typename aF::svector temp(value->reuse()); temp.resize(count); std::copy(static_cast(dbr), static_cast(dbr) + count, temp.begin()); @@ -584,12 +584,12 @@ void copy_DBR(const void * dbr, unsigned count, P { if (count == 1) { - std::tr1::shared_ptr value = std::tr1::static_pointer_cast(pvStructure->getSubField("value")); + std::tr1::shared_ptr value = std::tr1::static_pointer_cast(pvStructure->getSubFieldT("value")); value->put(static_cast(dbr)[0]); } else { - std::tr1::shared_ptr value = pvStructure->getSubField("value"); + std::tr1::shared_ptr value = pvStructure->getSubFieldT("value"); PVIntArray::svector temp(value->reuse()); temp.resize(count); std::copy(static_cast(dbr), static_cast(dbr) + count, temp.begin()); @@ -609,7 +609,7 @@ void copy_DBR(const void * dbr, unsigned count, } else { - std::tr1::shared_ptr value = pvStructure->getSubField("value"); + std::tr1::shared_ptr value = pvStructure->getSubFieldT("value"); const dbr_string_t* dbrStrings = static_cast(dbr); PVStringArray::svector sA(value->reuse()); sA.resize(count); @@ -624,7 +624,7 @@ void copy_DBR(const void * dbr, unsigned c { if (count == 1) { - std::tr1::shared_ptr value = std::tr1::static_pointer_cast(pvStructure->getSubField("value.index")); + std::tr1::shared_ptr value = std::tr1::static_pointer_cast(pvStructure->getSubFieldT("value.index")); value->put(static_cast(dbr)[0]); } else @@ -640,10 +640,10 @@ void copy_DBR_STS(const void * dbr, unsigned count, PVStructure::shared_pointer { const T* data = static_cast(dbr); - PVStructure::shared_pointer alarm = pvStructure->getSubField("alarm"); - alarm->getSubField("status")->put(dbrStatus2alarmStatus[data->status]); - alarm->getSubField("severity")->put(data->severity); - alarm->getSubField("message")->put(dbrStatus2alarmMessage[data->status]); + PVStructure::shared_pointer alarm = pvStructure->getSubFieldT("alarm"); + alarm->getSubFieldT("status")->put(dbrStatus2alarmStatus[data->status]); + alarm->getSubFieldT("severity")->put(data->severity); + alarm->getSubFieldT("message")->put(dbrStatus2alarmMessage[data->status]); copy_DBR(&data->value, count, pvStructure); } @@ -654,11 +654,11 @@ void copy_DBR_TIME(const void * dbr, unsigned count, PVStructure::shared_pointer { const T* data = static_cast(dbr); - PVStructure::shared_pointer ts = pvStructure->getSubField("timeStamp"); + PVStructure::shared_pointer ts = pvStructure->getSubFieldT("timeStamp"); epics::pvData::int64 spe = data->stamp.secPastEpoch; spe += 7305*86400; - ts->getSubField("secondsPastEpoch")->put(spe); - ts->getSubField("nanoseconds")->put(data->stamp.nsec); + ts->getSubFieldT("secondsPastEpoch")->put(spe); + ts->getSubFieldT("nanoseconds")->put(data->stamp.nsec); copy_DBR_STS(dbr, count, pvStructure); } @@ -667,13 +667,13 @@ void copy_DBR_TIME(const void * dbr, unsigned count, PVStructure::shared_pointer template void copy_format(const void * /*dbr*/, PVStructure::shared_pointer const & pvDisplayStructure) { - pvDisplayStructure->getSubField("format")->put("%d"); + pvDisplayStructure->getSubFieldT("format")->put("%d"); } template <> void copy_format(const void * /*dbr*/, PVStructure::shared_pointer const & pvDisplayStructure) { - pvDisplayStructure->getSubField("format")->put("%s"); + pvDisplayStructure->getSubFieldT("format")->put("%s"); } #define COPY_FORMAT_FOR(T) \ @@ -686,11 +686,11 @@ void copy_format(const void * dbr, PVStructure::shared_pointer const & pvDisp { \ char fmt[16]; \ sprintf(fmt, "%%.%df", data->precision); \ - pvDisplayStructure->getSubField("format")->put(std::string(fmt)); \ + pvDisplayStructure->getSubFieldT("format")->put(std::string(fmt)); \ } \ else \ { \ - pvDisplayStructure->getSubField("format")->put("%f"); \ + pvDisplayStructure->getSubFieldT("format")->put("%f"); \ } \ } @@ -707,23 +707,23 @@ void copy_DBR_GR(const void * dbr, unsigned count, PVStructure::shared_pointer c { const T* data = static_cast(dbr); - PVStructure::shared_pointer alarm = pvStructure->getSubField("alarm"); - alarm->getSubField("status")->put(0); - alarm->getSubField("severity")->put(data->severity); - alarm->getSubField("message")->put(dbrStatus2alarmMessage[data->status]); + PVStructure::shared_pointer alarm = pvStructure->getSubFieldT("alarm"); + alarm->getSubFieldT("status")->put(0); + alarm->getSubFieldT("severity")->put(data->severity); + alarm->getSubFieldT("message")->put(dbrStatus2alarmMessage[data->status]); - PVStructure::shared_pointer disp = pvStructure->getSubField("display"); - disp->getSubField("units")->put(std::string(data->units)); - disp->getSubField("limitHigh")->put(data->upper_disp_limit); - disp->getSubField("limitLow")->put(data->lower_disp_limit); + PVStructure::shared_pointer disp = pvStructure->getSubFieldT("display"); + disp->getSubFieldT("units")->put(std::string(data->units)); + disp->getSubFieldT("limitHigh")->put(data->upper_disp_limit); + disp->getSubFieldT("limitLow")->put(data->lower_disp_limit); copy_format(dbr, disp); - PVStructure::shared_pointer va = pvStructure->getSubField("valueAlarm"); - va->getSubField("highAlarmLimit")->put(data->upper_alarm_limit); - va->getSubField("highWarningLimit")->put(data->upper_warning_limit); - va->getSubField("lowWarningLimit")->put(data->lower_warning_limit); - va->getSubField("lowAlarmLimit")->put(data->lower_alarm_limit); + PVStructure::shared_pointer va = pvStructure->getSubFieldT("valueAlarm"); + va->getSubFieldT("highAlarmLimit")->put(data->upper_alarm_limit); + va->getSubFieldT("highWarningLimit")->put(data->upper_warning_limit); + va->getSubFieldT("lowWarningLimit")->put(data->lower_warning_limit); + va->getSubFieldT("lowAlarmLimit")->put(data->lower_alarm_limit); copy_DBR(&data->value, count, pvStructure); } @@ -745,27 +745,27 @@ void copy_DBR_CTRL(const void * dbr, unsigned count, PVStructure::shared_pointer { const T* data = static_cast(dbr); - PVStructure::shared_pointer alarm = pvStructure->getSubField("alarm"); - alarm->getSubField("status")->put(0); - alarm->getSubField("severity")->put(data->severity); - alarm->getSubField("message")->put(dbrStatus2alarmMessage[data->status]); + PVStructure::shared_pointer alarm = pvStructure->getSubFieldT("alarm"); + alarm->getSubFieldT("status")->put(0); + alarm->getSubFieldT("severity")->put(data->severity); + alarm->getSubFieldT("message")->put(dbrStatus2alarmMessage[data->status]); - PVStructure::shared_pointer disp = pvStructure->getSubField("display"); - disp->getSubField("units")->put(std::string(data->units)); - disp->getSubField("limitHigh")->put(data->upper_disp_limit); - disp->getSubField("limitLow")->put(data->lower_disp_limit); + PVStructure::shared_pointer disp = pvStructure->getSubFieldT("display"); + disp->getSubFieldT("units")->put(std::string(data->units)); + disp->getSubFieldT("limitHigh")->put(data->upper_disp_limit); + disp->getSubFieldT("limitLow")->put(data->lower_disp_limit); copy_format(dbr, disp); - PVStructure::shared_pointer va = pvStructure->getSubField("valueAlarm"); - std::tr1::static_pointer_cast(va->getSubField("highAlarmLimit"))->put(data->upper_alarm_limit); - std::tr1::static_pointer_cast(va->getSubField("highWarningLimit"))->put(data->upper_warning_limit); - std::tr1::static_pointer_cast(va->getSubField("lowWarningLimit"))->put(data->lower_warning_limit); - std::tr1::static_pointer_cast(va->getSubField("lowAlarmLimit"))->put(data->lower_alarm_limit); + PVStructure::shared_pointer va = pvStructure->getSubFieldT("valueAlarm"); + std::tr1::static_pointer_cast(va->getSubFieldT("highAlarmLimit"))->put(data->upper_alarm_limit); + std::tr1::static_pointer_cast(va->getSubFieldT("highWarningLimit"))->put(data->upper_warning_limit); + std::tr1::static_pointer_cast(va->getSubFieldT("lowWarningLimit"))->put(data->lower_warning_limit); + std::tr1::static_pointer_cast(va->getSubFieldT("lowAlarmLimit"))->put(data->lower_alarm_limit); - PVStructure::shared_pointer ctrl = pvStructure->getSubField("control"); - ctrl->getSubField("limitHigh")->put(data->upper_ctrl_limit); - ctrl->getSubField("limitLow")->put(data->lower_ctrl_limit); + PVStructure::shared_pointer ctrl = pvStructure->getSubFieldT("control"); + ctrl->getSubFieldT("limitHigh")->put(data->upper_ctrl_limit); + ctrl->getSubFieldT("limitLow")->put(data->lower_ctrl_limit); copy_DBR(&data->value, count, pvStructure); } @@ -965,7 +965,7 @@ CAChannelPut::CAChannelPut(CAChannel::shared_pointer const & _channel, lastRequestFlag(false) { // NOTE: we require value type, we can only put value field - bitSet->set(pvStructure->getSubField("value")->getFieldOffset()); + bitSet->set(pvStructure->getSubFieldT("value")->getFieldOffset()); } void CAChannelPut::activate() @@ -1002,7 +1002,7 @@ int doPut_pvStructure(CAChannel::shared_pointer const & channel, void *usrArg, P if (isScalarValue) { - std::tr1::shared_ptr value = std::tr1::static_pointer_cast(pvStructure->getSubField("value")); + std::tr1::shared_ptr value = std::tr1::static_pointer_cast(pvStructure->getSubFieldT("value")); pT val = value->get(); int result = ca_array_put_callback(channel->getNativeType(), 1, @@ -1018,7 +1018,7 @@ int doPut_pvStructure(CAChannel::shared_pointer const & channel, void *usrArg, P } else { - std::tr1::shared_ptr value = pvStructure->getSubField("value"); + std::tr1::shared_ptr value = pvStructure->getSubFieldT("value"); const pT* val = value->view().data(); int result = ca_array_put_callback(channel->getNativeType(), static_cast(value->getLength()), @@ -1042,7 +1042,7 @@ int doPut_pvStructure(CAChannel::shar if (isScalarValue) { - std::tr1::shared_ptr value = std::tr1::static_pointer_cast(pvStructure->getSubField("value")); + std::tr1::shared_ptr value = std::tr1::static_pointer_cast(pvStructure->getSubFieldT("value")); string val = value->get(); int result = ca_array_put_callback(channel->getNativeType(), 1, @@ -1058,7 +1058,7 @@ int doPut_pvStructure(CAChannel::shar } else { - std::tr1::shared_ptr value = pvStructure->getSubField("value"); + std::tr1::shared_ptr value = pvStructure->getSubFieldT("value"); PVStringArray::const_svector stringArray(value->view()); @@ -1101,7 +1101,7 @@ int doPut_pvStructure(CAChannel:: if (isScalarValue) { - std::tr1::shared_ptr value = std::tr1::static_pointer_cast(pvStructure->getSubField("value.index")); + std::tr1::shared_ptr value = std::tr1::static_pointer_cast(pvStructure->getSubFieldT("value.index")); dbr_enum_t val = value->get(); int result = ca_array_put_callback(channel->getNativeType(), 1, diff --git a/src/remote/security.cpp b/src/remote/security.cpp index 8bb78ee..fa159d3 100644 --- a/src/remote/security.cpp +++ b/src/remote/security.cpp @@ -37,7 +37,7 @@ CAClientSecurityPlugin::CAClientSecurityPlugin() userName = buffer; // TODO more error handling - m_userAndHost->getSubField("user")->put(userName); + m_userAndHost->getSubFieldT("user")->put(userName); // // host name @@ -48,7 +48,7 @@ CAClientSecurityPlugin::CAClientSecurityPlugin() hostName = buffer; // TODO more error handling - m_userAndHost->getSubField("host")->put(buffer); + m_userAndHost->getSubFieldT("host")->put(buffer); } diff --git a/src/server/responseHandlers.cpp b/src/server/responseHandlers.cpp index b6fe912..d094b22 100644 --- a/src/server/responseHandlers.cpp +++ b/src/server/responseHandlers.cpp @@ -522,7 +522,7 @@ public: if (args->getSubField("help")) { PVStructure::shared_pointer help = getPVDataCreate()->createPVStructure(helpStructure); - help->getSubField("value")->put(helpString); + help->getSubFieldT("value")->put(helpString); return help; } @@ -535,7 +535,7 @@ public: { PVStructure::shared_pointer result = getPVDataCreate()->createPVStructure(channelListStructure); - PVStringArray::shared_pointer allChannelNames = result->getSubField("value"); + PVStringArray::shared_pointer allChannelNames = result->getSubFieldT("value"); ChannelListRequesterImpl::shared_pointer listListener(new ChannelListRequesterImpl()); std::vector& providers = m_serverContext->getChannelProviders(); @@ -597,9 +597,9 @@ public: if (EPICS_PVA_DEVELOPMENT_FLAG) ret << "-SNAPSHOT"; - result->getSubField("version")->put(ret.str()); - result->getSubField("implLang")->put("cpp"); - result->getSubField("host")->put(hostName); + result->getSubFieldT("version")->put(ret.str()); + result->getSubFieldT("implLang")->put("cpp"); + result->getSubFieldT("host")->put(hostName); std::stringstream sspid; #ifdef __vxworks @@ -609,12 +609,12 @@ public: #else sspid << getpid(); #endif - result->getSubField("process")->put(sspid.str()); + result->getSubFieldT("process")->put(sspid.str()); char timeText[64]; epicsTimeToStrftime(timeText, 64, "%Y-%m-%dT%H:%M:%S.%03f", &m_serverContext->getStartTime()); - result->getSubField("startTime")->put(timeText); + result->getSubFieldT("startTime")->put(timeText); return result;