From 9d0fe40a457f989159b95da55517752a4fe85451 Mon Sep 17 00:00:00 2001 From: "Rebecca N. Palmer" Date: Sun, 22 Nov 2015 21:05:09 +0000 Subject: [PATCH] QtLauncher::initApp: store argc to avoid crash As QApplication only stores a reference to argc, it may crash if the argc passed to it goes out of scope. (One way to trigger this is to pass an invalid --fg-root, triggering an initApp call from Options::setupRoot.) Copy argc to prevent this. --- src/GUI/QtLauncher.cxx | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/GUI/QtLauncher.cxx b/src/GUI/QtLauncher.cxx index bb10cba74..d16479e83 100644 --- a/src/GUI/QtLauncher.cxx +++ b/src/GUI/QtLauncher.cxx @@ -551,10 +551,14 @@ QtLauncher::~QtLauncher() void QtLauncher::initApp(int& argc, char** argv) { static bool qtInitDone = false; + static int s_argc; if (!qtInitDone) { qtInitDone = true; + s_argc = argc; // QApplication only stores a reference to argc, + // and may crash if it is freed + // http://doc.qt.io/qt-5/qguiapplication.html#QGuiApplication - QApplication* app = new QApplication(argc, argv); + QApplication* app = new QApplication(s_argc, argv); app->setOrganizationName("FlightGear"); app->setApplicationName("FlightGear"); app->setOrganizationDomain("flightgear.org"); -- 2.39.5