diff --git a/src/libCom/cxxTemplates/epicsGuard.h b/src/libCom/cxxTemplates/epicsGuard.h index 3d39980be..21013f822 100644 --- a/src/libCom/cxxTemplates/epicsGuard.h +++ b/src/libCom/cxxTemplates/epicsGuard.h @@ -17,12 +17,12 @@ template < class T > class epicsGuard { public: epicsGuard ( T & ); + epicsGuard ( const epicsGuard & ); ~epicsGuard (); private: T & targetMutex; - friend class epicsGuardRelease < T >; - // epicsGuard ( const epicsGuard & ); visual c++ warning bug // epicsGuard & operator = ( const epicsGuard & ); visual c++ warning bug + friend class epicsGuardRelease < T >; }; // Automatically releases and reapplies the mutex. @@ -54,6 +54,13 @@ inline epicsGuard < T > :: epicsGuard ( T & mutexIn ) : this->targetMutex.lock (); } +template < class T > +epicsGuard < T > :: epicsGuard ( const epicsGuard & guardIn ) : + targetMutex ( guardIn.targetMutex ) +{ + this->targetMutex.lock (); +} + template < class T > inline epicsGuard < T > :: ~epicsGuard () {