From 542d14bd02df770198f962b9d879aef94aa8dd32 Mon Sep 17 00:00:00 2001 From: Joerg Bornemann Date: Mon, 2 Dec 2019 15:27:43 +0100 Subject: [PATCH] Fix "Broken filename passed to function" message for qmake -tp vc Since commit 9ab043b6 we're checking for invalid file paths passed to Qt's file system engine. When initializing the deployment tool for VS projects we accidentally passed a file path containing '\0'. Fix that by using an infix QString, not QChar. Change-Id: Ieae066d20ac290354febd420abce68f28649b365 Reviewed-by: Andy Shaw --- qmake/generators/win32/msvc_vcproj.cpp | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/qmake/generators/win32/msvc_vcproj.cpp b/qmake/generators/win32/msvc_vcproj.cpp index 404088aa4a..867b14faea 100644 --- a/qmake/generators/win32/msvc_vcproj.cpp +++ b/qmake/generators/win32/msvc_vcproj.cpp @@ -1247,10 +1247,10 @@ void VcprojGenerator::initDeploymentTool() + "|" + targetPath + "|0;"; if (!qpaPluginDeployed) { - QChar debugInfixChar; + QString debugInfix; bool foundGuid = dllName.contains(QLatin1String("Guid")); if (foundGuid) - debugInfixChar = QLatin1Char('d'); + debugInfix = QLatin1Char('d'); if (foundGuid || dllName.contains(QLatin1String("Gui"))) { QFileInfo info2; @@ -1258,13 +1258,14 @@ void VcprojGenerator::initDeploymentTool() QString absoluteDllFilePath = dllPath.toQString(); if (!absoluteDllFilePath.endsWith(QLatin1Char('/'))) absoluteDllFilePath += QLatin1Char('/'); - absoluteDllFilePath += QLatin1String("../plugins/platforms/qwindows") + debugInfixChar + QLatin1String(".dll"); + absoluteDllFilePath += QLatin1String("../plugins/platforms/qwindows") + + debugInfix + QLatin1String(".dll"); info2 = QFileInfo(absoluteDllFilePath); if (info2.exists()) break; } if (info2.exists()) { - conf.deployment.AdditionalFiles += QLatin1String("qwindows") + debugInfixChar + QLatin1String(".dll") + conf.deployment.AdditionalFiles += QLatin1String("qwindows") + debugInfix + QLatin1String(".dll") + QLatin1Char('|') + QDir::toNativeSeparators(info2.absolutePath()) + QLatin1Char('|') + targetPath + QLatin1String("\\platforms") + QLatin1String("|0;");