diff options
| -rw-r--r-- | sources/shiboken6/ApiExtractor/fileout.cpp | 6 | ||||
| -rw-r--r-- | sources/shiboken6/ApiExtractor/messages.cpp | 9 | ||||
| -rw-r--r-- | sources/shiboken6/ApiExtractor/messages.h | 2 |
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); |
