From 7a5bdb93c4116c87a4d5a3fed6adc9ab106948fe Mon Sep 17 00:00:00 2001 From: Jeff Hill Date: Tue, 19 Oct 2004 21:05:39 +0000 Subject: [PATCH] fixed ca_name() returns the record name w/o appending the field name --- src/db/dbChannelIO.cpp | 17 ++++++++++++++--- src/db/dbChannelIO.h | 8 +++++++- 2 files changed, 21 insertions(+), 4 deletions(-) diff --git a/src/db/dbChannelIO.cpp b/src/db/dbChannelIO.cpp index 8e21713ab..770fbbc14 100644 --- a/src/db/dbChannelIO.cpp +++ b/src/db/dbChannelIO.cpp @@ -46,6 +46,9 @@ dbChannelIO::dbChannelIO ( cacChannel ( notify ), mutex ( mutexIn ), serviceIO ( serviceIO ), addr ( addrIn ) { + unsigned bufLen = dbNameSizeOfPV ( & this->addr ) + 1; + this->pNameStr.reset ( new char [ bufLen ] ); + dbNameOfPV ( & this->addr, this->pNameStr.get (), bufLen ); } void dbChannelIO::initiateConnect ( epicsGuard < epicsMutex > & guard ) @@ -175,11 +178,19 @@ unsigned long dbChannelIO::nativeElementCount ( return 0u; } -const char *dbChannelIO::pName ( - epicsGuard < epicsMutex > & guard ) const +// hopefully to be eventually phased out +const char * dbChannelIO::pName ( + epicsGuard < epicsMutex > & guard ) const throw () { guard.assertIdenticalMutex ( this->mutex ); - return addr.precord->name; + return this->pNameStr.get (); +} + +unsigned dbChannelIO::getName ( + epicsGuard < epicsMutex > &, + char * pBuf, unsigned bufLen ) const throw () +{ + return dbNameOfPV ( & this->addr, pBuf, bufLen ); } short dbChannelIO::nativeType ( diff --git a/src/db/dbChannelIO.h b/src/db/dbChannelIO.h index 8dfa8e140..971ec8922 100644 --- a/src/db/dbChannelIO.h +++ b/src/db/dbChannelIO.h @@ -36,6 +36,7 @@ #endif #include "compilerDependencies.h" +#include "epicsMemory.h" #ifdef dbChannelIOh_restore_epicsExportSharedSymbols # define epicsExportSharedSymbols @@ -60,8 +61,11 @@ public: const struct db_field_log * pfl, cacStateNotify & notify ); void show ( epicsGuard < epicsMutex > &, unsigned level ) const; + unsigned getName ( + epicsGuard < epicsMutex > &, + char * pBuf, unsigned bufLen ) const throw (); const char * pName ( - epicsGuard < epicsMutex > & ) const; + epicsGuard < epicsMutex > & ) const throw (); void * operator new ( size_t size, tsFreeList < dbChannelIO, 256, epicsMutexNOOP > & ); epicsPlacementDeleteOperator (( void *, @@ -72,6 +76,8 @@ private: epicsMutex & mutex; dbContext & serviceIO; dbAddr addr; + epics_auto_ptr < char, eapt_array > pNameStr; + void initiateConnect ( epicsGuard < epicsMutex > & ); void eliminateExcessiveSendBacklog (