From 2cdb9c5c697be7c4c65e392583d917605b7634db Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Tue, 15 Aug 2023 23:22:17 -0400 Subject: [PATCH] must make copies on Linux --- tools/lammps-gui/preferences.cpp | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/tools/lammps-gui/preferences.cpp b/tools/lammps-gui/preferences.cpp index 38631e6295..4858592dc3 100644 --- a/tools/lammps-gui/preferences.cpp +++ b/tools/lammps-gui/preferences.cpp @@ -54,6 +54,14 @@ #include #endif +// duplicate string +static char *mystrdup(const std::string &text) +{ + auto tmp = new char[text.size() + 1]; + memcpy(tmp, text.c_str(), text.size() + 1); + return tmp; +} + Preferences::Preferences(LammpsWrapper *_lammps, QWidget *parent) : QDialog(parent), tabWidget(new QTabWidget), buttonBox(new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel)), @@ -158,9 +166,9 @@ void Preferences::accept() "LAMMPS-GUI must be relaunched."), QMessageBox::Ok); msg.exec(); - const char *path = QCoreApplication::applicationFilePath().toStdString().c_str(); - const char *arg0 = QCoreApplication::arguments().at(0).toStdString().c_str(); - execl(path, arg0, nullptr); + const char *path = mystrdup(QCoreApplication::applicationFilePath().toStdString()); + const char *arg0 = mystrdup(QCoreApplication::arguments().at(0).toStdString()); + execl(path, arg0, (char *)NULL); } QDialog::accept(); }