]> granicus.if.org Git - icinga2/commitdiff
Fix crash in the unit tests
authorGunnar Beutner <gunnar@beutner.name>
Thu, 4 Dec 2014 20:45:15 +0000 (21:45 +0100)
committerGunnar Beutner <gunnar@beutner.name>
Thu, 4 Dec 2014 20:50:22 +0000 (21:50 +0100)
fixes #7769

lib/base/application.cpp
lib/base/application.hpp
lib/base/timer.hpp
test/test.cpp

index 3df75b5a516834a3b95e40439ceb4ebc6a37d768..21dce450350e611b0e5440247af6461dbfe9ec87 100644 (file)
@@ -108,7 +108,7 @@ void Application::Exit(int rc)
                logger->Flush();
        }
 
-       Timer::Uninitialize();
+       UninitializeBase();
 
 #ifdef _DEBUG
        exit(rc);
@@ -149,6 +149,18 @@ void Application::InitializeBase(void)
 #endif /* _WIN32 */
 
        Utility::ExecuteDeferredInitializers();
+
+       /* make sure the thread pool gets initialized */
+       GetTP();
+
+       Timer::Initialize();
+}
+
+void Application::UninitializeBase(void)
+{
+       Timer::Uninitialize();
+
+       GetTP().Stop();
 }
 
 /**
@@ -316,12 +328,7 @@ mainloop:
        DynamicObject::StopObjects();
        Application::GetInstance()->OnShutdown();
 
-#ifdef _DEBUG
-       GetTP().Stop();
-       m_ShuttingDown = false;
-
-       Timer::Uninitialize();
-#endif /* _DEBUG */
+       UninitializeBase();
 }
 
 void Application::OnShutdown(void)
index be662297ec707036e79873cc5fd0e8650f4005cd..8ae7cdd280dc74c882edf028a45f7306dcd25d5a 100644 (file)
@@ -43,6 +43,7 @@ public:
        ~Application(void);
 
        static void InitializeBase(void);
+       static void UninitializeBase(void);
 
        static Application::Ptr GetInstance(void);
 
index 8c855071578a8618cd801f92ddc2fd604ccdd382..34b5eca9813294fe900fe85bf2e6a3cad3eb1d77 100644 (file)
@@ -52,9 +52,6 @@ public:
 
        boost::signals2::signal<void(const Timer::Ptr&)> OnTimerExpired;
 
-       static void Initialize(void);
-       static void Uninitialize(void);
-
        class Holder {
        public:
                Holder(Timer *timer)
@@ -88,6 +85,11 @@ private:
        void Call();
 
        static void TimerThreadProc(void);
+
+       static void Initialize(void);
+       static void Uninitialize(void);
+
+       friend class Application;
 };
 
 }
index d4fc3d279b5e34697802a147e69f6c0f9fd6de8a..fbde0c80df09d22ac1f03d418ab8dcf3724ed0cc 100644 (file)
@@ -31,12 +31,11 @@ struct InitLibBase
        InitLibBase(void)
        {
                Application::InitializeBase();
-               Timer::Initialize();
        }
 
        ~InitLibBase(void)
        {
-               Timer::Uninitialize();
+               Application::UninitializeBase();
        }
 };