forked from qt-creator/qt-creator
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:
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user