diff --git a/libs/main/core/pibase.h b/libs/main/core/pibase.h index c8eff9d8..d015620e 100644 --- a/libs/main/core/pibase.h +++ b/libs/main/core/pibase.h @@ -868,6 +868,15 @@ template<> inline uint piHash(const float & v) {return (uint)v;} template<> inline uint piHash(const double & v) {return piHashData((const uchar *)&v, sizeof(v));} template<> inline uint piHash(const ldouble & v) {return piHashData((const uchar *)&v, sizeof(v));} +template inline void piDeleteAll(T & container) { + for (auto i: container) + delete i; +} +template inline void piDeleteAllAndClear(T & container) { + piDeleteAll(container); + container.clear(); +} + #define piRoundf piRound #define piRoundd piRound #define piComparef piCompare diff --git a/libs/main/core/piobject.cpp b/libs/main/core/piobject.cpp index dd4eed43..f0cdfac6 100644 --- a/libs/main/core/piobject.cpp +++ b/libs/main/core/piobject.cpp @@ -194,6 +194,7 @@ PIObject::~PIObject() { mutexObjects().unlock(); deleted(this); piDisconnectAll(); + _signature_ = 0; }