moc: Store errno after fopen call

To avoid QFile::encodeName() potentially overriding the value.

Pick-to: 6.2 6.5 6.6
Task-number: QTBUG-101926
Change-Id: Ie751df877d6624238ded344474b5eccc324ec541
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
bb10
Alexandru Croitor 2023-07-12 11:13:14 +02:00
parent 258e7ed9fd
commit dd1b7b5539
1 changed files with 8 additions and 2 deletions

View File

@ -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()) {