diff options
author | Tim Jenssen <[email protected]> | 2019-10-25 19:48:48 +0200 |
---|---|---|
committer | Tim Jenssen <[email protected]> | 2019-10-28 06:55:14 +0000 |
commit | 51991e3a3ee855f12cae999b01a93741c77cf6cd (patch) | |
tree | 8ac6710efb3918fa43279bdce3b36c6ad6aa8c73 /src/plugins/webassembly/webassemblyrunconfigurationaspects.cpp | |
parent | e3904f3b135564834ae78245d79818e72d2edd7b (diff) |
WebAssembly: fix crashes
Change-Id: I9a2a44c85a254628f119eb041036492bc3022cdf
Reviewed-by: Alessandro Portale <[email protected]>
Diffstat (limited to 'src/plugins/webassembly/webassemblyrunconfigurationaspects.cpp')
-rw-r--r-- | src/plugins/webassembly/webassemblyrunconfigurationaspects.cpp | 40 |
1 files changed, 22 insertions, 18 deletions
diff --git a/src/plugins/webassembly/webassemblyrunconfigurationaspects.cpp b/src/plugins/webassembly/webassemblyrunconfigurationaspects.cpp index aacbc677509..b74d73a5d46 100644 --- a/src/plugins/webassembly/webassemblyrunconfigurationaspects.cpp +++ b/src/plugins/webassembly/webassemblyrunconfigurationaspects.cpp @@ -41,24 +41,26 @@ static QStringList detectedBrowsers(ProjectExplorer::Target *target) { static QStringList result; if (result.isEmpty()) { - const Utils::Environment environment = target->activeBuildConfiguration()->environment(); - const Utils::FilePath emrunPath = environment.searchInPath("emrun"); + if (auto bc = target->activeBuildConfiguration()) { + const Utils::Environment environment = bc->environment(); + const Utils::FilePath emrunPath = environment.searchInPath("emrun"); - QProcess browserLister; - browserLister.setProcessEnvironment(environment.toProcessEnvironment()); - browserLister.setProgram(emrunPath.toString()); - browserLister.setArguments({"--list_browsers"}); - browserLister.start(QIODevice::ReadOnly); + QProcess browserLister; + browserLister.setProcessEnvironment(environment.toProcessEnvironment()); + browserLister.setProgram(emrunPath.toString()); + browserLister.setArguments({"--list_browsers"}); + browserLister.start(QIODevice::ReadOnly); - if (browserLister.waitForFinished()) { - const QByteArray output = browserLister.readAllStandardOutput(); - QTextStream ts(output); - QString line; - const QRegularExpression regExp(" - (.*):.*"); - while (ts.readLineInto(&line)) { - const QRegularExpressionMatch match = regExp.match(line); - if (match.hasMatch()) - result << match.captured(1); + if (browserLister.waitForFinished()) { + const QByteArray output = browserLister.readAllStandardOutput(); + QTextStream ts(output); + QString line; + const QRegularExpression regExp(" - (.*):.*"); + while (ts.readLineInto(&line)) { + const QRegularExpressionMatch match = regExp.match(line); + if (match.hasMatch()) + result << match.captured(1); + } } } } @@ -68,7 +70,8 @@ static QStringList detectedBrowsers(ProjectExplorer::Target *target) WebBrowserSelectionAspect::WebBrowserSelectionAspect(ProjectExplorer::Target *target) : m_availableBrowsers(detectedBrowsers(target)) { - m_currentBrowser = m_availableBrowsers.first(); + if (!m_availableBrowsers.isEmpty()) + m_currentBrowser = m_availableBrowsers.first(); setDisplayName(tr("Web browser")); setId("WebBrowserAspect"); setSettingsKey("RunConfiguration.WebBrowser"); @@ -90,7 +93,8 @@ void WebBrowserSelectionAspect::addToConfigurationLayout(QFormLayout *layout) void WebBrowserSelectionAspect::fromMap(const QVariantMap &map) { - m_currentBrowser = map.value(BROWSER_KEY, m_availableBrowsers.first()).toString(); + if (!m_availableBrowsers.isEmpty()) + m_currentBrowser = map.value(BROWSER_KEY, m_availableBrowsers.first()).toString(); } void WebBrowserSelectionAspect::toMap(QVariantMap &map) const |