Skip to content

Commit

Permalink
Fixed appending function call when it does not exist in script
Browse files Browse the repository at this point in the history
  • Loading branch information
dvvrd committed Sep 12, 2014
1 parent df3574a commit c9d4823
Show file tree
Hide file tree
Showing 3 changed files with 7 additions and 6 deletions.
10 changes: 6 additions & 4 deletions trikScriptRunner/src/scriptEngineWorker.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,6 @@ ScriptEngineWorker::ScriptEngineWorker(trikControl::Brick &brick, QString const
, mBrick(brick)
, mThreadingVariable(*this)
, mStartDirPath(startDirPath)
, mCloned(false)
{
connect(&mBrick, SIGNAL(quitSignal()), this, SLOT(onScriptRequestingToQuit()));
}
Expand All @@ -86,7 +85,6 @@ ScriptEngineWorker &ScriptEngineWorker::clone()
QScriptValue globalObject = result->mEngine->globalObject();
Utils::copyRecursivelyTo(mEngine->globalObject(), globalObject, result->mEngine);
result->mEngine->setGlobalObject(globalObject);
result->mCloned = true;
return *result;
}

Expand All @@ -104,11 +102,15 @@ void ScriptEngineWorker::run(QString const &script, bool inEventDrivenMode, QStr
}

mThreadingVariable.setCurrentScript(script);
mEngine->evaluate(function.isEmpty() ? script : QString("%1\n%2();").arg(script, function));
QRegExp const functionRegexp(QString(
"(.*%1\\s*=\\s*\\w*\\s*function\\(.*\\).*)|(.*function\\s+%1\\s*\\(.*\\).*)").arg(function));
bool const needCallFunction = !function.isEmpty() && functionRegexp.exactMatch(script)
&& !script.trimmed().endsWith(function + "();");
mEngine->evaluate(needCallFunction ? QString("%1\n%2();").arg(script, function) : script);

if (!mBrick.isInEventDrivenMode()) {
mBrick.stop();
if (!mCloned) {
if (!dynamic_cast<ScriptEngineWorker *>(parent())) {
// Only main thread must wait for others
mThreadingVariable.waitForAll();
}
Expand Down
1 change: 0 additions & 1 deletion trikScriptRunner/src/scriptEngineWorker.h
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,6 @@ private slots:
trikControl::Brick &mBrick;
Threading mThreadingVariable;
QString const mStartDirPath;
bool mCloned;
};

}
2 changes: 1 addition & 1 deletion trikScriptRunner/src/threading.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@

using namespace trikScriptRunner;

int const maxThreadsCount = 10;
int const maxThreadsCount = 100;

Threading::Threading(ScriptEngineWorker &runner)
: mRunner(runner)
Expand Down

0 comments on commit c9d4823

Please sign in to comment.