From: Rohan McGovern Date: Thu, 23 Feb 2012 00:43:25 +0000 (+1000) Subject: Fixed resolution of QMAKESPEC on Windows. X-Git-Tag: qt-v5.0.0-alpha1~809 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=8583bc914aaf2a0301e5e2655c68fcac79f5fb34;p=profile%2Fivi%2Fqtbase.git Fixed resolution of QMAKESPEC on Windows. base_vars["QMAKESPEC_ORIGINAL"] is not guaranteed to be set the first time resolveSpec is called, since an include() can wipe it out. Change it so that resolveSpec is called repeatedly until some QMAKESPEC_ORIGINAL is set. The code which attempted to remove all of the path up to the last / was incorrect and must have been dead code (or its wrongness didn't matter) until now. Change-Id: I2b31ae10fc284ac7293c3cd95e5a2fd503ca7ab0 Reviewed-by: Marius Storm-Olsen --- diff --git a/qmake/project.cpp b/qmake/project.cpp index 2029e06..a862033 100644 --- a/qmake/project.cpp +++ b/qmake/project.cpp @@ -1528,12 +1528,15 @@ QMakeProject::resolveSpec(QString *spec, const QString &qmakespec) // We can't resolve symlinks as they do on Unix, so configure.exe puts the source of the // qmake.conf at the end of the default/qmake.conf in the QMAKESPEC_ORG variable. const QStringList &spec_org = base_vars["QMAKESPEC_ORIGINAL"]; - if (!spec_org.isEmpty()) { + if (spec_org.isEmpty()) { + // try again the next time around + *spec = QString(); + } else { *spec = spec_org.at(0); #endif int lastSlash = spec->lastIndexOf(QLatin1Char('/')); if (lastSlash != -1) - spec->remove(lastSlash + 1); + spec->remove(0, lastSlash + 1); } } }