From c1425724d7abf56590c2a7e04ef6f99aa34cc6f0 Mon Sep 17 00:00:00 2001 From: Alexandru Croitor Date: Wed, 12 Jul 2023 11:13:14 +0200 Subject: [PATCH] moc: Store errno after fopen call To avoid QFile::encodeName() potentially overriding the value. Task-number: QTBUG-101926 Change-Id: Ie751df877d6624238ded344474b5eccc324ec541 Reviewed-by: Fabian Kosmale (cherry picked from commit dd1b7b5539d6aecdd5f8342ef0fa260e40f5c483) Reviewed-by: Qt Cherry-pick Bot --- src/tools/moc/main.cpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/tools/moc/main.cpp b/src/tools/moc/main.cpp index 0d57d3b69e1..2f0d11a0567 100644 --- a/src/tools/moc/main.cpp +++ b/src/tools/moc/main.cpp @@ -549,9 +549,12 @@ int runMoc(int argc, char **argv) f = fopen(QFile::encodeName(jsonOutputFileName).constData(), "w"); if (!f) #endif + { + const auto fopen_errno = errno; fprintf(stderr, "moc: Cannot create JSON output file %s. %s\n", QFile::encodeName(jsonOutputFileName).constData(), - strerror(errno)); + strerror(fopen_errno)); + } jsonOutput.reset(f); } } else { // use stdout @@ -596,9 +599,12 @@ int runMoc(int argc, char **argv) depFileHandleRaw = fopen(QFile::encodeName(depOutputFileName).constData(), "w"); if (!depFileHandleRaw) #endif + { + const auto fopen_errno = errno; fprintf(stderr, "moc: Cannot create dep output file '%s'. %s\n", QFile::encodeName(depOutputFileName).constData(), - strerror(errno)); + strerror(fopen_errno)); + } depFileHandle.reset(depFileHandleRaw); if (!depFileHandle.isNull()) {