QtVersion: Set qmakeIsExecutable to false if qmake crashes.

This prevents literally dozens of crash dialog boxes on Windows.
Check for a crash in the helper library and in updateVersionInfo
consistently whatever is called first.
Initialize qmakeIsExecutable in 2nd constructor as well.

Change-Id: Ifafb7b3edfae8826ac062d634a39a2a804446942
Reviewed-on: http://codereview.qt.nokia.com/1661
Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Daniel Teske <daniel.teske@nokia.com>
This commit is contained in:
Friedemann Kleint
2011-07-14 13:35:40 +02:00
parent 289acee78a
commit 796e1fb442
4 changed files with 45 additions and 22 deletions

View File

@@ -78,12 +78,20 @@ QString BuildableHelperLibrary::qtInstallDataDir(const QString &qmakePath)
QString BuildableHelperLibrary::qtVersionForQMake(const QString &qmakePath)
{
if (qmakePath.isEmpty())
bool qmakeIsExecutable;
return BuildableHelperLibrary::qtVersionForQMake(qmakePath, &qmakeIsExecutable);
}
QString BuildableHelperLibrary::qtVersionForQMake(const QString &qmakePath, bool *qmakeIsExecutable)
{
*qmakeIsExecutable = !qmakePath.isEmpty();
if (!*qmakeIsExecutable)
return QString();
QProcess qmake;
qmake.start(qmakePath, QStringList(QLatin1String("--version")));
if (!qmake.waitForStarted()) {
*qmakeIsExecutable = false;
qWarning("Cannot start '%s': %s", qPrintable(qmakePath), qPrintable(qmake.errorString()));
return QString();
}
@@ -93,9 +101,11 @@ QString BuildableHelperLibrary::qtVersionForQMake(const QString &qmakePath)
return QString();
}
if (qmake.exitStatus() != QProcess::NormalExit) {
*qmakeIsExecutable = false;
qWarning("'%s' crashed.", qPrintable(qmakePath));
return QString();
}
const QString output = QString::fromLocal8Bit(qmake.readAllStandardOutput());
static QRegExp regexp(QLatin1String("(QMake version|QMake version:)[\\s]*([\\d.]*)"),
Qt::CaseInsensitive);