OSDN Git Service

fix memory leak, thanks to Valgrind
[rec10/rec10-git.git] / b25-remote / TsUtilClass.cpp
index ec4c298..9c1301f 100755 (executable)
@@ -1,88 +1,88 @@
-// TsUtilClass.cpp: TS\83\86\81[\83e\83B\83\8a\83e\83B\81[\83N\83\89\83X\82Ì\83C\83\93\83v\83\8a\83\81\83\93\83e\81[\83V\83\87\83\93\r
-//\r
-//////////////////////////////////////////////////////////////////////\r
-\r
-#include "TsUtilClass.h"\r
-\r
-\r
-//////////////////////////////////////////////////////////////////////\r
-// CDynamicReferenceable \83N\83\89\83X\82Ì\8d\\92z/\8fÁ\96Å\r
-//////////////////////////////////////////////////////////////////////\r
-\r
-CDynamicReferenceable::CDynamicReferenceable()\r
-       : m_dwRefCount(0UL)\r
-{\r
-\r
-}\r
-\r
-CDynamicReferenceable::~CDynamicReferenceable()\r
-{\r
-\r
-}\r
-\r
-void CDynamicReferenceable::AddRef(void)\r
-{\r
-       // \8eQ\8fÆ\83J\83E\83\93\83g\83C\83\93\83N\83\8a\83\81\83\93\83g\r
-       m_dwRefCount++;\r
-}\r
-\r
-void CDynamicReferenceable::ReleaseRef(void)\r
-{\r
-       // \8eQ\8fÆ\83J\83E\83\93\83g\83f\83N\83\8a\83\81\83\93\83g\r
-       if(m_dwRefCount){\r
-               // \83C\83\93\83X\83^\83\93\83X\8aJ\95ú\r
-               if(!(--m_dwRefCount))delete this;\r
-               }\r
-#ifdef _DEBUG\r
-       else{\r
-               ::DebugBreak();\r
-               }\r
-#endif\r
-}\r
-\r
-\r
-//////////////////////////////////////////////////////////////////////\r
-// CCriticalLock \83N\83\89\83X\82Ì\8d\\92z/\8fÁ\96Å\r
-//////////////////////////////////////////////////////////////////////\r
-\r
-CCriticalLock::CCriticalLock()\r
-{\r
-       // \83N\83\8a\83e\83B\83J\83\8b\83Z\83N\83V\83\87\83\93\8f\89\8aú\89»\r
-       pthread_mutex_init(&m_CriticalSection, NULL);\r
-}\r
-\r
-CCriticalLock::~CCriticalLock()\r
-{\r
-       // \83N\83\8a\83e\83B\83J\83\8b\83Z\83N\83V\83\87\83\93\8dí\8f\9c\r
-       pthread_mutex_destroy(&m_CriticalSection);\r
-}\r
-\r
-void CCriticalLock::Lock(void)\r
-{\r
-       // \83N\83\8a\83e\83B\83J\83\8b\83Z\83N\83V\83\87\83\93\8eæ\93¾\r
-       pthread_mutex_lock(&m_CriticalSection);\r
-}\r
-\r
-void CCriticalLock::Unlock(void)\r
-{\r
-       // \83N\83\8a\83e\83B\83J\83\8b\83Z\83N\83V\83\87\83\93\8aJ\95ú\r
-       pthread_mutex_unlock(&m_CriticalSection);\r
-}\r
-       \r
-       \r
-//////////////////////////////////////////////////////////////////////\r
-// CBlockLock \83N\83\89\83X\82Ì\8d\\92z/\8fÁ\96Å\r
-//////////////////////////////////////////////////////////////////////\r
-       \r
-CBlockLock::CBlockLock(CCriticalLock *pCriticalLock)\r
-       : m_pCriticalLock(pCriticalLock)\r
-{\r
-       // \83\8d\83b\83N\8eæ\93¾\r
-       m_pCriticalLock->Lock();\r
-}\r
-\r
-CBlockLock::~CBlockLock()\r
-{\r
-       // \83\8d\83b\83N\8aJ\95ú\r
-       m_pCriticalLock->Unlock();\r
-}\r
+// TsUtilClass.cpp: TSユーティリティークラスのインプリメンテーション
+//
+//////////////////////////////////////////////////////////////////////
+
+#include "TsUtilClass.h"
+
+
+//////////////////////////////////////////////////////////////////////
+// CDynamicReferenceable クラスの構築/消滅
+//////////////////////////////////////////////////////////////////////
+
+CDynamicReferenceable::CDynamicReferenceable()
+       : m_dwRefCount(0UL)
+{
+
+}
+
+CDynamicReferenceable::~CDynamicReferenceable()
+{
+
+}
+
+void CDynamicReferenceable::AddRef(void)
+{
+       // 参照カウントインクリメント
+       m_dwRefCount++;
+}
+
+void CDynamicReferenceable::ReleaseRef(void)
+{
+       // 参照カウントデクリメント
+       if(m_dwRefCount){
+               // インスタンス開放
+               if(!(--m_dwRefCount))delete this;
+               }
+#ifdef _DEBUG
+       else{
+               ::DebugBreak();
+               }
+#endif
+}
+
+
+//////////////////////////////////////////////////////////////////////
+// CCriticalLock クラスの構築/消滅
+//////////////////////////////////////////////////////////////////////
+
+CCriticalLock::CCriticalLock()
+{
+       // クリティカルセクション初期化
+       pthread_mutex_init(&m_CriticalSection, NULL);
+}
+
+CCriticalLock::~CCriticalLock()
+{
+       // クリティカルセクション削除
+       pthread_mutex_destroy(&m_CriticalSection);
+}
+
+void CCriticalLock::Lock(void)
+{
+       // クリティカルセクション取得
+       pthread_mutex_lock(&m_CriticalSection);
+}
+
+void CCriticalLock::Unlock(void)
+{
+       // クリティカルセクション開放
+       pthread_mutex_unlock(&m_CriticalSection);
+}
+       
+       
+//////////////////////////////////////////////////////////////////////
+// CBlockLock クラスの構築/消滅
+//////////////////////////////////////////////////////////////////////
+       
+CBlockLock::CBlockLock(CCriticalLock *pCriticalLock)
+       : m_pCriticalLock(pCriticalLock)
+{
+       // ロック取得
+       m_pCriticalLock->Lock();
+}
+
+CBlockLock::~CBlockLock()
+{
+       // ロック開放
+       m_pCriticalLock->Unlock();
+}