From 52e4e125b6d71baeb843da740cecf319fee99511 Mon Sep 17 00:00:00 2001 From: Kai Koehne Date: Wed, 21 Nov 2018 13:53:56 +0100 Subject: qmlscene: Fix potential invalid memory access to QTranslator MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 --- tools/qmlscene/main.cpp | 16 +++------------- 1 file changed, 3 insertions(+), 13 deletions(-) (limited to 'tools') 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()); } -- cgit v1.2.3