Index: src/main/cpp/logmanager.cpp =================================================================== --- src/main/cpp/logmanager.cpp (Revision 1570860) +++ src/main/cpp/logmanager.cpp (Arbeitskopie) @@ -49,15 +49,19 @@ IMPLEMENT_LOG4CXX_OBJECT(DefaultRepositorySelector) void * LogManager::guard = 0; +spi::RepositorySelectorPtr LogManager::repoSelector(LogManager::getDefaultRepositorySelector()); -RepositorySelectorPtr& LogManager::getRepositorySelector() { +RepositorySelectorPtr LogManager::getDefaultRepositorySelector() { // // call to initialize APR and trigger "start" of logging clock // APRInitializer::initialize(); - static spi::RepositorySelectorPtr selector; + + LoggerRepositoryPtr hierarchy(new Hierarchy()); + RepositorySelectorPtr selector(new DefaultRepositorySelector(hierarchy)); + return selector; } @@ -75,7 +79,7 @@ } LogManager::guard = guard1; - LogManager::getRepositorySelector() = selector; + LogManager::repoSelector = selector; } @@ -82,14 +86,7 @@ LoggerRepositoryPtr& LogManager::getLoggerRepository() { - if (getRepositorySelector() == 0) - { - LoggerRepositoryPtr hierarchy(new Hierarchy()); - RepositorySelectorPtr selector(new DefaultRepositorySelector(hierarchy)); - getRepositorySelector() = selector; - } - - return getRepositorySelector()->getLoggerRepository(); + return LogManager::repoSelector->getLoggerRepository(); } LoggerPtr LogManager::getRootLogger() Index: src/main/include/log4cxx/logmanager.h =================================================================== --- src/main/include/log4cxx/logmanager.h (Revision 1570860) +++ src/main/include/log4cxx/logmanager.h (Arbeitskopie) @@ -40,8 +40,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. */ @@ -49,7 +49,8 @@ { private: static void * guard; - static spi::RepositorySelectorPtr& getRepositorySelector(); + static spi::RepositorySelectorPtr repoSelector; + static spi::RepositorySelectorPtr getDefaultRepositorySelector(); public: /**