aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--sources/shiboken6/ApiExtractor/fileout.cpp6
-rw-r--r--sources/shiboken6/ApiExtractor/messages.cpp9
-rw-r--r--sources/shiboken6/ApiExtractor/messages.h2
3 files changed, 15 insertions, 2 deletions
diff --git a/sources/shiboken6/ApiExtractor/fileout.cpp b/sources/shiboken6/ApiExtractor/fileout.cpp
index 10b9747ab..16cfe2bb5 100644
--- a/sources/shiboken6/ApiExtractor/fileout.cpp
+++ b/sources/shiboken6/ApiExtractor/fileout.cpp
@@ -218,8 +218,10 @@ FileOut::State FileOut::done(QString *errorMessage)
*errorMessage = msgCannotOpenForWriting(fileWrite);
return Failure;
}
- stream.setDevice(&fileWrite);
- stream << tmp;
+ if (fileWrite.write(tmp) == -1 || !fileWrite.flush()) {
+ *errorMessage = msgWriteFailed(fileWrite, tmp.size());
+ return Failure;
+ }
}
if (diff) {
std::printf("%sFile: %s%s\n", colorInfo, qPrintable(name), colorReset);
diff --git a/sources/shiboken6/ApiExtractor/messages.cpp b/sources/shiboken6/ApiExtractor/messages.cpp
index 2e72b95bc..d0fec85b6 100644
--- a/sources/shiboken6/ApiExtractor/messages.cpp
+++ b/sources/shiboken6/ApiExtractor/messages.cpp
@@ -540,6 +540,15 @@ QString msgCannotOpenForWriting(const QFile &f)
.arg(QDir::toNativeSeparators(f.fileName()), f.errorString());
}
+QString msgWriteFailed(const QFile &f, qsizetype size)
+{
+ QString result;
+ QTextStream(&result) << "Failed to write " << size << "bytes to '"
+ << QDir::toNativeSeparators(f.fileName()) << "': "
+ << f.errorString();
+ return result;
+}
+
// generator.cpp
QString msgCannotUseEnumAsInt(const QString &name)
diff --git a/sources/shiboken6/ApiExtractor/messages.h b/sources/shiboken6/ApiExtractor/messages.h
index 6610a318a..a17c22f2d 100644
--- a/sources/shiboken6/ApiExtractor/messages.h
+++ b/sources/shiboken6/ApiExtractor/messages.h
@@ -177,6 +177,8 @@ QString msgCannotOpenForReading(const QFile &f);
QString msgCannotOpenForWriting(const QFile &f);
+QString msgWriteFailed(const QFile &f, qsizetype size);
+
QString msgCannotUseEnumAsInt(const QString &name);
QString msgConversionTypesDiffer(const QString &varType, const QString &conversionType);