diff options
author | Machiavelli <none@none> | 2010-08-15 16:55:44 +0200 |
---|---|---|
committer | Machiavelli <none@none> | 2010-08-15 16:55:44 +0200 |
commit | e8d03e55ca8eee754412d9779e54043bef6c13f6 (patch) | |
tree | 85a61d70742be0c9ef6a6978e5586c892ce0249c /src | |
parent | 96144752be826028ba3aa1f2ff663b5a0fc4dcb0 (diff) |
Fix a crash related to concurrent access to config file by different threads.
--HG--
branch : trunk
Diffstat (limited to 'src')
-rw-r--r-- | src/server/shared/Configuration/Config.cpp | 2 | ||||
-rw-r--r-- | src/server/shared/Configuration/Config.h | 3 |
2 files changed, 5 insertions, 0 deletions
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; |