From 9ae221ca0cd4f7496f25d534047cc88801d87747 Mon Sep 17 00:00:00 2001 From: Michael Davidsaver Date: Tue, 29 Aug 2017 16:39:42 -0500 Subject: [PATCH] apply reftrack to PVField --- src/factory/PVDataCreateFactory.cpp | 6 +++++- src/factory/PVField.cpp | 8 +++++++- src/pv/pvData.h | 1 + 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/src/factory/PVDataCreateFactory.cpp b/src/factory/PVDataCreateFactory.cpp index 209df54..d62715e 100644 --- a/src/factory/PVDataCreateFactory.cpp +++ b/src/factory/PVDataCreateFactory.cpp @@ -24,6 +24,7 @@ #include #include #include +#include using std::tr1::static_pointer_cast; using std::size_t; @@ -607,7 +608,10 @@ PVDataCreatePtr PVDataCreate::getPVDataCreate() static Mutex mutex; Lock xx(mutex); - if(pvDataCreate.get()==0) pvDataCreate = PVDataCreatePtr(new PVDataCreate()); + if(pvDataCreate.get()==0) { + registerRefCounter("PVField", &PVField::num_instances); + pvDataCreate = PVDataCreatePtr(new PVDataCreate()); + } return pvDataCreate; } diff --git a/src/factory/PVField.cpp b/src/factory/PVField.cpp index 856dc5a..4190917 100644 --- a/src/factory/PVField.cpp +++ b/src/factory/PVField.cpp @@ -17,6 +17,7 @@ #include #include #include +#include using std::tr1::const_pointer_cast; using std::size_t; @@ -24,15 +25,20 @@ using std::string; namespace epics { namespace pvData { +size_t PVField::num_instances; + PVField::PVField(FieldConstPtr field) : parent(NULL),field(field), fieldOffset(0), nextFieldOffset(0), immutable(false) { + REFTRACE_INCREMENT(num_instances); } PVField::~PVField() -{ } +{ + REFTRACE_DECREMENT(num_instances); +} size_t PVField::getFieldOffset() const diff --git a/src/pv/pvData.h b/src/pv/pvData.h index e4db0ef..28aaca9 100644 --- a/src/pv/pvData.h +++ b/src/pv/pvData.h @@ -271,6 +271,7 @@ public: void copy(const PVField& from); void copyUnchecked(const PVField& from); + static size_t num_instances; // use atomic::get() or volatile* access protected: PVField::shared_pointer getPtrSelf() {