From 53ab67cdfe66693b27789282afc099d4dcffd4fa Mon Sep 17 00:00:00 2001 From: Oswald Buddenhagen Date: Fri, 14 Sep 2012 17:29:13 +0200 Subject: [PATCH] properly C-quote the manifest file name in the rc file Change-Id: I8c8eb85d412becc8c4029c2aa393abf6f8e949b6 Reviewed-by: Joerg Bornemann --- qmake/generators/win32/msvc_nmake.cpp | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/qmake/generators/win32/msvc_nmake.cpp b/qmake/generators/win32/msvc_nmake.cpp index bd5ead6617..ba490a9dfb 100644 --- a/qmake/generators/win32/msvc_nmake.cpp +++ b/qmake/generators/win32/msvc_nmake.cpp @@ -355,6 +355,16 @@ void NmakeMakefileGenerator::writeImplicitRulesPart(QTextStream &t) } +static QString cQuoted(const QString &str) +{ + QString ret = str; + ret.replace(QLatin1Char('"'), QStringLiteral("\\\"")); + ret.replace(QLatin1Char('\\'), QStringLiteral("\\\\")); + ret.prepend(QLatin1Char('"')); + ret.append(QLatin1Char('"')); + return ret; +} + void NmakeMakefileGenerator::writeBuildRulesPart(QTextStream &t) { const ProString templateName = project->first("TEMPLATE"); @@ -396,7 +406,7 @@ void NmakeMakefileGenerator::writeBuildRulesPart(QTextStream &t) project->values("QMAKE_CLEAN") << manifest_rc << manifest_res; t << "\n\techo 1 /* CREATEPROCESS_MANIFEST_RESOURCE_ID */ 24 /* RT_MANIFEST */ " - << '"' << QFileInfo(unescapeFilePath(manifest)).fileName() << "\">" << manifest_rc; + << cQuoted(QFileInfo(unescapeFilePath(manifest)).fileName()) << ">" << manifest_rc; if (generateManifest) { t << "\n\tif not exist $(DESTDIR_TARGET) del " << manifest << ">NUL 2>&1";