diff options
author | Joerg Bornemann <joerg.bornemann@qt.io> | 2020-03-06 09:44:05 +0100 |
---|---|---|
committer | Joerg Bornemann <joerg.bornemann@qt.io> | 2020-03-06 10:00:01 +0100 |
commit | 2de3bfced35ae060acffc06e66e18279de6f5099 (patch) | |
tree | e065fb927b82fc3a6f909836fef90f22adcd9399 /src | |
parent | 249a2e3271c3cc36edb88c993d277d93de2cf1c0 (diff) |
Fix UB in QProcess deprecation warning fixes
The commits e1e08629 and 66e905b1 introduced undefined behavior. Fix
this by assigning the result of takeFirst to a temporary.
Change-Id: I9e29412cf632d4836b95d47e12d8c07ab0645fbb
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
Diffstat (limited to 'src')
-rw-r--r-- | src/corelib/io/qprocess.cpp | 3 | ||||
-rw-r--r-- | src/platformsupport/services/genericunix/qgenericunixservices.cpp | 6 |
2 files changed, 7 insertions, 2 deletions
diff --git a/src/corelib/io/qprocess.cpp b/src/corelib/io/qprocess.cpp index 9400662b97..4500467ac2 100644 --- a/src/corelib/io/qprocess.cpp +++ b/src/corelib/io/qprocess.cpp @@ -2522,7 +2522,8 @@ int QProcess::execute(const QString &command) QStringList args = splitCommand(command); if (args.isEmpty()) return -2; - return execute(args.takeFirst(), args); + QString program = args.takeFirst(); + return execute(program, args); } /*! diff --git a/src/platformsupport/services/genericunix/qgenericunixservices.cpp b/src/platformsupport/services/genericunix/qgenericunixservices.cpp index 8e9923e208..b583d636c0 100644 --- a/src/platformsupport/services/genericunix/qgenericunixservices.cpp +++ b/src/platformsupport/services/genericunix/qgenericunixservices.cpp @@ -167,7 +167,11 @@ static inline bool launch(const QString &launcher, const QUrl &url) const bool ok = ::system(qPrintable(command + QLatin1String(" &"))); #else QStringList args = QProcess::splitCommand(command); - const bool ok = !args.isEmpty() && QProcess::startDetached(args.takeFirst(), args); + bool ok = false; + if (!args.isEmpty()) { + QString program = args.takeFirst(); + ok = QProcess::startDetached(program, args); + } #endif if (!ok) qWarning("Launch failed (%s)", qPrintable(command)); |