From c1a2a3b82f3c017b07db908b934f2ace8e14a7e0 Mon Sep 17 00:00:00 2001 From: Joerg Bornemann Date: Thu, 27 Mar 2014 11:20:35 +0100 Subject: catch exceptions in JS callback Task-number: QTCREATORBUG-11866 Change-Id: Ieb952bf92cc7837e4a59d147b63b3533ba63e1cd Reviewed-by: Christian Kandeler --- src/lib/corelib/buildgraph/qtmocscanner.cpp | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) (limited to 'src/lib/corelib/buildgraph/qtmocscanner.cpp') diff --git a/src/lib/corelib/buildgraph/qtmocscanner.cpp b/src/lib/corelib/buildgraph/qtmocscanner.cpp index bf8558c3b..f4dd1bbcb 100644 --- a/src/lib/corelib/buildgraph/qtmocscanner.cpp +++ b/src/lib/corelib/buildgraph/qtmocscanner.cpp @@ -32,7 +32,7 @@ #include "artifact.h" #include "productbuilddata.h" #include "scanresultcache.h" -#include +#include #include #include @@ -140,14 +140,24 @@ QScriptValue QtMocScanner::js_apply(QScriptContext *ctx, QScriptEngine *engine, return that->apply(engine, attachedPointer(input)); } +static QScriptValue scannerCountError(QScriptEngine *engine, int scannerCount, + const QString &fileTag) +{ + return engine->currentContext()->throwError( + Tr::tr("There are %1 scanners for the file tag %2. " + "Expected is exactly one.").arg(scannerCount).arg(fileTag)); +} + QScriptValue QtMocScanner::apply(QScriptEngine *engine, const Artifact *artifact) { if (!m_cppScanner) { QList scanners = ScannerPluginManager::scannersForFileTag("cpp"); - QBS_CHECK(scanners.count() == 1); + if (scanners.count() != 1) + return scannerCountError(engine, scanners.count(), QLatin1String("cpp")); m_cppScanner = scanners.first(); scanners = ScannerPluginManager::scannersForFileTag("hpp"); - QBS_CHECK(scanners.count() == 1); + if (scanners.count() != 1) + return scannerCountError(engine, scanners.count(), QLatin1String("hpp")); m_hppScanner = scanners.first(); } -- cgit v1.2.3