From 50b9979f89c6bdb761762e8c42176acb6bd7f18c Mon Sep 17 00:00:00 2001 From: Giuseppe D'Angelo Date: Sat, 23 Mar 2024 13:44:46 +0100 Subject: QML Tools: add some checks for QFile::open failures Change-Id: Ic95509efbd7ce33d6e98a52eef3dd319cd328306 Reviewed-by: Ulf Hermann --- tools/qmlformat/qmlformat.cpp | 16 +++++++++------- tools/qmllint/main.cpp | 6 ++++-- tools/qmltc/qmltccodewriter.cpp | 10 ++++++---- 3 files changed, 19 insertions(+), 13 deletions(-) (limited to 'tools') diff --git a/tools/qmlformat/qmlformat.cpp b/tools/qmlformat/qmlformat.cpp index 1262bb6391..e26a6412c9 100644 --- a/tools/qmlformat/qmlformat.cpp +++ b/tools/qmlformat/qmlformat.cpp @@ -175,11 +175,14 @@ static bool parseFile(const QString &filename, const Options &options) res = fileItem.writeOut(filename, numberOfBackupFiles, lwOptions, &fw, checks); } else { QFile out; - out.open(stdout, QIODevice::WriteOnly); - LineWriter lw([&out](QStringView s) { out.write(s.toUtf8()); }, filename, lwOptions); - OutWriter ow(lw); - res = fileItem.writeOutForFile(ow, checks); - ow.flush(); + if (out.open(stdout, QIODevice::WriteOnly)) { + LineWriter lw([&out](QStringView s) { out.write(s.toUtf8()); }, filename, lwOptions); + OutWriter ow(lw); + res = fileItem.writeOutForFile(ow, checks); + ow.flush(); + } else { + res = false; + } } return res; } @@ -259,8 +262,7 @@ Options buildCommandLineOptions(const QCoreApplication &app) QStringList files; if (!parser.value("files").isEmpty()) { QFile file(parser.value("files")); - file.open(QIODevice::Text | QIODevice::ReadOnly); - if (file.isOpen()) { + if (file.open(QIODevice::Text | QIODevice::ReadOnly)) { QTextStream in(&file); while (!in.atEnd()) { QString file = in.readLine(); diff --git a/tools/qmllint/main.cpp b/tools/qmllint/main.cpp index 0c59e47169..89864c7c38 100644 --- a/tools/qmllint/main.cpp +++ b/tools/qmllint/main.cpp @@ -512,8 +512,10 @@ All warnings can be set to three levels: QTextStream(stdout) << QString::fromUtf8(json); } else { QFile file(fileName); - file.open(QFile::WriteOnly); - file.write(json); + if (file.open(QFile::WriteOnly)) + file.write(json); + else + success = false; } } diff --git a/tools/qmltc/qmltccodewriter.cpp b/tools/qmltc/qmltccodewriter.cpp index d4eb57606c..a8aa0d5f2b 100644 --- a/tools/qmltc/qmltccodewriter.cpp +++ b/tools/qmltc/qmltccodewriter.cpp @@ -230,12 +230,14 @@ static void writeToFile(const QString &path, const QByteArray &data) QFileInfo fi(path); if (fi.exists() && fi.size() == data.size()) { QFile oldFile(path); - oldFile.open(QIODevice::ReadOnly); - if (oldFile.readAll() == data) - return; + if (oldFile.open(QIODevice::ReadOnly)) { + if (oldFile.readAll() == data) + return; + } } QFile file(path); - file.open(QIODevice::WriteOnly); + if (!file.open(QIODevice::WriteOnly)) + qFatal("Could not open file %s", qPrintable(path)); file.write(data); } -- cgit v1.2.3