summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFriedemann Kleint <Friedemann.Kleint@nokia.com>2012-01-30 15:16:50 +0100
committerQt by Nokia <qt-info@nokia.com>2012-02-05 19:03:18 +0100
commit9f54846d951838361f4188b423e7aa7c7b9a9540 (patch)
tree021271df2b4199c261c238b1e032e1ec96a927bb
parent60f24ec608fc784731a18b43fa59b82ad41f9478 (diff)
qmake: Work around MSVC compiler bug.
Disable optimization for getProjectUUID() as it triggers ASSERT: "&other != this" at qstring.h:720 with -O2. Change-Id: I51b31d4318ba9be187c186623099171d8f48235b Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
-rw-r--r--qmake/generators/win32/msvc_vcproj.cpp14
1 files changed, 14 insertions, 0 deletions
diff --git a/qmake/generators/win32/msvc_vcproj.cpp b/qmake/generators/win32/msvc_vcproj.cpp
index 439574fbb0..109b50fd94 100644
--- a/qmake/generators/win32/msvc_vcproj.cpp
+++ b/qmake/generators/win32/msvc_vcproj.cpp
@@ -305,6 +305,16 @@ struct VcsolutionDepend {
QStringList dependencies;
};
+/* Disable optimization in getProjectUUID() due to a compiler
+ * bug in MSVC 2010 that causes ASSERT: "&other != this" in the QString
+ * copy constructor for non-empty file names at:
+ * filename.isEmpty()?project->first("QMAKE_MAKEFILE"):filename */
+
+#ifdef Q_CC_MSVC
+# pragma optimize( "g", off )
+# pragma warning ( disable : 4748 )
+#endif
+
QUuid VcprojGenerator::getProjectUUID(const QString &filename)
{
bool validUUID = true;
@@ -335,6 +345,10 @@ QUuid VcprojGenerator::getProjectUUID(const QString &filename)
return uuid;
}
+#ifdef Q_CC_MSVC
+# pragma optimize( "g", on )
+#endif
+
QUuid VcprojGenerator::increaseUUID(const QUuid &id)
{
QUuid result(id);