From e8d03e55ca8eee754412d9779e54043bef6c13f6 Mon Sep 17 00:00:00 2001 From: Machiavelli Date: Sun, 15 Aug 2010 16:55:44 +0200 Subject: Fix a crash related to concurrent access to config file by different threads. --HG-- branch : trunk --- src/server/shared/Configuration/Config.cpp | 2 ++ src/server/shared/Configuration/Config.h | 3 +++ 2 files changed, 5 insertions(+) (limited to 'src') diff --git a/src/server/shared/Configuration/Config.cpp b/src/server/shared/Configuration/Config.cpp index d0b9cd4ff17..2d38c39ac42 100644 --- a/src/server/shared/Configuration/Config.cpp +++ b/src/server/shared/Configuration/Config.cpp @@ -26,6 +26,8 @@ static bool GetValueHelper(ACE_Configuration_Heap *mConf, const char *name, ACE_ if (!mConf) return false; + ACE_GUARD_RETURN(ACE_Thread_Mutex, guard, sConfig.mMtx, false); + ACE_TString section_name; ACE_Configuration_Section_Key section_key; ACE_Configuration_Section_Key root_key = mConf->root_section(); diff --git a/src/server/shared/Configuration/Config.h b/src/server/shared/Configuration/Config.h index 93830a15023..218da4b7583 100644 --- a/src/server/shared/Configuration/Config.h +++ b/src/server/shared/Configuration/Config.h @@ -43,6 +43,9 @@ class Config float GetFloatDefault(const char * name, const float def); std::string GetFilename() const { return mFilename; } + + ACE_Thread_Mutex mMtx; + private: std::string mFilename; ACE_Configuration_Heap *mConf; -- cgit v1.2.3