From 183135dbce494115c02f2b1d6c5ce54032a449e8 Mon Sep 17 00:00:00 2001 From: Gunnar Beutner Date: Tue, 10 Sep 2013 16:53:11 +0200 Subject: [PATCH] Fix object initialization order. --- icinga-app/icinga.cpp | 32 ++++++++++++++------------------ 1 file changed, 14 insertions(+), 18 deletions(-) diff --git a/icinga-app/icinga.cpp b/icinga-app/icinga.cpp index d09e2dc58..29a9efdd4 100644 --- a/icinga-app/icinga.cpp +++ b/icinga-app/icinga.cpp @@ -86,6 +86,19 @@ static bool LoadConfigFiles(bool validateOnly) if (validateOnly) return true; + if (Application::GetInstance()) { + Log(LogCritical, "icinga-app", "You must not manually create an Application object."); + return false; + } + + ConfigItemBuilder::Ptr builder = boost::make_shared(); + builder->SetType(Application::GetApplicationType()); + builder->SetName("application"); + ConfigItem::Ptr item = builder->Compile(); + item->Register(); + DynamicObject::Ptr dobj = item->Commit(); + dobj->OnConfigLoaded(); + ConfigItem::ActivateItems(); ConfigItem::DiscardItems(); @@ -321,23 +334,6 @@ int main(int argc, char **argv) return EXIT_SUCCESS; } - Application::Ptr app = Application::GetInstance(); - - if (app) { - Log(LogCritical, "icinga-app", "You must not manually create an Application object."); - return EXIT_FAILURE; - } - - ConfigItemBuilder::Ptr builder = boost::make_shared(); - builder->SetType(Application::GetApplicationType()); - builder->SetName("application"); - ConfigItem::Ptr item = builder->Compile(); - item->Register(); - DynamicObject::Ptr dobj = item->Commit(); - dobj->OnConfigLoaded(); - dobj->Start(); - app = static_pointer_cast(dobj); - #ifndef _WIN32 struct sigaction sa; memset(&sa, 0, sizeof(sa)); @@ -345,5 +341,5 @@ int main(int argc, char **argv) sigaction(SIGHUP, &sa, NULL); #endif /* _WIN32 */ - return app->Run(); + return Application::GetInstance()->Run(); } -- 2.40.0