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:
parent
660c38ce72
commit
9d0fe40a45
1 changed files with 5 additions and 1 deletions
|
@ -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");
|
||||
|
|
Loading…
Add table
Reference in a new issue