summaryrefslogtreecommitdiffstats
path: root/src/corelib/kernel/qcoreapplication.cpp
diff options
context:
space:
mode:
authorAndy Shaw <andy.shaw@qt.io>2017-02-15 09:38:28 +0100
committerPaul Olav Tvete <paul.tvete@qt.io>2017-12-14 09:39:40 +0000
commit9832f0ab857904a88c9b5e71a9e447abbebca8fb (patch)
treedd1b6e9523e4b75ebd46d4b7412295b2bfa4bb02 /src/corelib/kernel/qcoreapplication.cpp
parent6a2609f3799c4f52e8ad28495f9846b057743575 (diff)
Copy argv[0] to prevent it pointing to invalid memory later
If QCoreApplication is recreated, it is possible the previous argv[0] pointer has become invalid, so we should not rely on it. So to prevent that, we copy the original argv[0] to a static QByteArray. Task-number: QTBUG-58919 Change-Id: Idadd4cb78e4281830165fb681ea7925109f316ff Reviewed-by: Edward Welbourne <edward.welbourne@qt.io> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Diffstat (limited to 'src/corelib/kernel/qcoreapplication.cpp')
-rw-r--r--src/corelib/kernel/qcoreapplication.cpp6
1 files changed, 3 insertions, 3 deletions
diff --git a/src/corelib/kernel/qcoreapplication.cpp b/src/corelib/kernel/qcoreapplication.cpp
index bf423cef21..db40b37da9 100644
--- a/src/corelib/kernel/qcoreapplication.cpp
+++ b/src/corelib/kernel/qcoreapplication.cpp
@@ -2149,11 +2149,11 @@ QString QCoreApplication::applicationFilePath()
QCoreApplicationPrivate *d = self->d_func();
if (d->argc) {
- static const char *procName = d->argv[0];
- if (qstrcmp(procName, d->argv[0]) != 0) {
+ static QByteArray procName = QByteArray(d->argv[0]);
+ if (procName != d->argv[0]) {
// clear the cache if the procname changes, so we reprocess it.
QCoreApplicationPrivate::clearApplicationFilePath();
- procName = d->argv[0];
+ procName = QByteArray(d->argv[0]);
}
}