Index: cpp/logmanager.cpp =================================================================== --- cpp/logmanager.cpp (Revision 1623014) +++ cpp/logmanager.cpp (Arbeitskopie) @@ -36,6 +36,7 @@ #include #include +#include #include #if !defined(LOG4CXX) #define LOG4CXX 1 @@ -49,9 +50,10 @@ IMPLEMENT_LOG4CXX_OBJECT(DefaultRepositorySelector) void * LogManager::guard = 0; +static Pool repoSelectorMutexPool; +static Mutex repoSelectorMutex(repoSelectorMutexPool); - RepositorySelectorPtr& LogManager::getRepositorySelector() { // // call to initialize APR and trigger "start" of logging clock @@ -82,6 +84,7 @@ LoggerRepositoryPtr& LogManager::getLoggerRepository() { + synchronized sync(repoSelectorMutex); if (getRepositorySelector() == 0) { LoggerRepositoryPtr hierarchy(new Hierarchy()); Index: include/log4cxx/logmanager.h =================================================================== --- include/log4cxx/logmanager.h (Revision 1623014) +++ include/log4cxx/logmanager.h (Arbeitskopie) @@ -25,6 +25,8 @@ #include #include +#include +#include #include namespace log4cxx @@ -40,8 +42,8 @@ /** * Use the LogManager class to retreive Logger - * instances or to operate on the current - * {@link log4cxx::spi::LoggerRepository LoggerRepository}. + * instances or to operate on the current + * {@link log4cxx::spi::LoggerRepository LoggerRepository}. * When the LogManager class is loaded * into memory the default initialization procedure is inititated. */