diff --git a/libsrc/python/PythonInit.cpp b/libsrc/python/PythonInit.cpp index f93f920f..48c734b2 100644 --- a/libsrc/python/PythonInit.cpp +++ b/libsrc/python/PythonInit.cpp @@ -19,6 +19,11 @@ PythonInit::PythonInit() // init Python Debug(Logger::getInstance("DAEMON"), "Initializing Python interpreter"); Py_InitializeEx(0); + if ( !Py_IsInitialized() ) + { + throw std::runtime_error("Initializing Python failed!"); + } + PyEval_InitThreads(); // Create the GIL mainThreadState = PyEval_SaveThread(); } diff --git a/src/hyperiond/main.cpp b/src/hyperiond/main.cpp index c65b3ce3..061a85bf 100644 --- a/src/hyperiond/main.cpp +++ b/src/hyperiond/main.cpp @@ -334,26 +334,32 @@ int main(int argc, char** argv) rootPath = rDir.absolutePath(); } } - // create /.hyperion folder for default path, check if the directory is read/writeable - // NOTE: No further checks inside Hyperion. FileUtils::writeFile() will resolve permission errors and others that occur during runtime - QDir mDir(rootPath); - QFileInfo mFi(rootPath); - if(!mDir.mkpath(rootPath) || !mFi.isWritable() || !mDir.isReadable()) - throw std::runtime_error("The specified root path can't be created or isn't read/writeable. Please setup the permissions correctly!"); - - HyperionDaemon* hyperiond = nullptr; - try - { - hyperiond = new HyperionDaemon(rootPath, qApp, bool(logLevelCheck)); - } - catch (std::exception& e) - { - Error(log, "Hyperion Daemon aborted:\n %s", e.what()); - } int rc = 1; + try { + + // create /.hyperion folder for default path, check if the directory is read/writeable + // NOTE: No further checks inside Hyperion. FileUtils::writeFile() will resolve permission errors and others that occur during runtime + QDir mDir(rootPath); + QFileInfo mFi(rootPath); + if(!mDir.mkpath(rootPath) || !mFi.isWritable() || !mDir.isReadable()) + { + throw std::runtime_error("The specified root path can't be created or isn't read/writeable. Please setup the permissions correctly!"); + } + + HyperionDaemon* hyperiond = nullptr; + try + { + hyperiond = new HyperionDaemon(rootPath, qApp, bool(logLevelCheck)); + } + catch (std::exception& e) + { + Error(log, "Hyperion Daemon aborted: %s", e.what()); + throw; + } + // run the application if (isGuiApp) { @@ -368,15 +374,14 @@ int main(int argc, char** argv) rc = app->exec(); } Info(log, "Application closed with code %d", rc); + delete hyperiond; } catch (std::exception& e) { - Error(log, "Hyperion aborted:\n %s", e.what()); + Error(log, "Hyperion aborted: %s", e.what()); } // delete components - delete hyperiond; Logger::deleteInstance(); - return rc; }