1
0
Fork 0

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.
This commit is contained in:
Rebecca N. Palmer 2015-11-22 21:05:09 +00:00
parent 660c38ce72
commit 9d0fe40a45

View file

@ -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");