aboutsummaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
authorKai Koehne <kai.koehne@qt.io>2018-11-21 13:53:56 +0100
committerKai Koehne <kai.koehne@qt.io>2018-11-23 07:41:55 +0000
commit52e4e125b6d71baeb843da740cecf319fee99511 (patch)
treedff29ba78ac5148f3b7b83fe7a6f7c206f6888af /tools
parent9926a4a49e8211a996667b467fd98b915e9f9d34 (diff)
qmlscene: Fix potential invalid memory access to QTranslator
Qt assumes that installed QTranslator object should remain valid for the whole lifetime of Qt, so let's create it on the heap. Change-Id: Ia99826a933eefd9952efc6556505c7f52920b483 Reviewed-by: Jan Arve Sæther <jan-arve.saether@qt.io>
Diffstat (limited to 'tools')
-rw-r--r--tools/qmlscene/main.cpp16
1 files changed, 3 insertions, 13 deletions
diff --git a/tools/qmlscene/main.cpp b/tools/qmlscene/main.cpp
index 4d18a868a2..c9e7dbadc9 100644
--- a/tools/qmlscene/main.cpp
+++ b/tools/qmlscene/main.cpp
@@ -310,14 +310,6 @@ static void displayFileDialog(Options *options)
puts("No filename specified...");
}
-#if QT_CONFIG(translation)
-static void loadTranslationFile(QTranslator &translator, const QString& directory)
-{
- translator.load(QLocale(), QLatin1String("qml"), QLatin1String("_"), directory + QLatin1String("/i18n"));
- QCoreApplication::installTranslator(&translator);
-}
-#endif
-
static void loadDummyDataFiles(QQmlEngine &engine, const QString& directory)
{
QDir dir(directory+"/dummydata", "*.qml");
@@ -588,10 +580,6 @@ int main(int argc, char ** argv)
if (!options.url.isEmpty()) {
if (!options.versionDetection || checkVersion(options.url)) {
-#if QT_CONFIG(translation)
- QTranslator translator;
-#endif
-
// TODO: as soon as the engine construction completes, the debug service is
// listening for connections. But actually we aren't ready to debug anything.
QQmlEngine engine;
@@ -603,7 +591,9 @@ int main(int argc, char ** argv)
if (options.url.isLocalFile()) {
QFileInfo fi(options.url.toLocalFile());
#if QT_CONFIG(translation)
- loadTranslationFile(translator, fi.path());
+ QTranslator *translator = new QTranslator(app.get());
+ if (translator->load(QLocale(), QLatin1String("qml"), QLatin1String("_"), fi.path() + QLatin1String("/i18n")))
+ QCoreApplication::installTranslator(translator);
#endif
loadDummyDataFiles(engine, fi.path());
}