From: Rebecca N. Palmer Date: Sun, 22 Nov 2015 21:05:09 +0000 (+0000) Subject: QtLauncher::initApp: store argc to avoid crash X-Git-Url: https://git.mxchange.org/?a=commitdiff_plain;h=9d0fe40a457f989159b95da55517752a4fe85451;p=flightgear.git 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. --- 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");