History

Some more script checks

Atlante45 committed 11 years ago

Commit 3e43a3c1 parent 13b7fa61 file · +9 −17Browse files

Showing the changes to libraries/script-engine/src/ScriptEngine.cpp (1 of 1 file). Show all

Unified · Split

libraries/script-engine/src/ScriptEngine.cpp+9−17
@@ -79,7 +79,6 @@ void avatarDataFromScriptValue(const QScriptValue &object, AvatarData* &out) { · 78 unmodified lines
7979 QScriptValue inputControllerToScriptValue(QScriptEngine *engine, AbstractInputController* const &in) {
8080 return engine->newQObject(in);
8181 }
82−
8382 void inputControllerFromScriptValue(const QScriptValue &object, AbstractInputController* &out) {
8483 out = qobject_cast<AbstractInputController*>(object.toQObject());
8584 }
@@ -95,9 +94,6 @@ ScriptEngine::ScriptEngine(const QString& scriptContents, const QString& fileNam · 9 unmodified lines
9594 _wantSignals(wantSignals),
9695 _controllerScriptingInterface(controllerScriptingInterface),
9796 _fileNameString(fileNameString),
98− _quatLibrary(),
99− _vec3Library(),
100− _uuidLibrary(),
10197 _isUserLoaded(false),
10298 _isReloading(false),
10399 _arrayBufferClass(new ArrayBufferClass(this))
@@ -654,7 +650,9 @@ void ScriptEngine::run() { · 550 unmodified lines
654650 }
655651 lastUpdate = now;
656652
657− checkExceptions(this, _fileNameString);
653+ if (!checkExceptions(this, _fileNameString)) {
654+ stop();
655+ }
658656 }
659657
660658 stopAllTimers(); // make sure all our timers are stopped if the script is ending
@@ -891,7 +889,6 @@ void ScriptEngine::load(const QString& loadFile) { · 230 unmodified lines
891889 }
892890 }
893891
894−
895892 bool ScriptEngine::checkSyntax(const QScriptProgram& program) {
896893 const auto syntaxCheck = QScriptEngine::checkSyntax(program.sourceCode());
897894 if (syntaxCheck.state() != QScriptSyntaxCheckResult::Valid) {
@@ -1005,14 +1002,10 @@ void ScriptEngine::entityScriptContentAvailable(const EntityItemID& entityID, co · 107 unmodified lines
10051002
10061003 auto scriptCache = DependencyManager::get<ScriptCache>();
10071004 bool isFileUrl = isURL && scriptOrURL.startsWith("file://");
1005+ auto fileName = QString("(EntityID:%1, %2)").arg(entityID.toString(), isURL ? scriptOrURL : "EmbededEntityScript");
10081006
1009− // first check the syntax of the script contents
1010− QScriptSyntaxCheckResult syntaxCheck = QScriptEngine::checkSyntax(contents);
1011− if (syntaxCheck.state() != QScriptSyntaxCheckResult::Valid) {
1012− qCDebug(scriptengine) << "ScriptEngine::loadEntityScript() entity:" << entityID;
1013− qCDebug(scriptengine) << " " << syntaxCheck.errorMessage() << ":"
1014− << syntaxCheck.errorLineNumber() << syntaxCheck.errorColumnNumber();
1015− qCDebug(scriptengine) << " SCRIPT:" << scriptOrURL;
1007+ QScriptProgram program(contents, fileName);
1008+ if (!checkSyntax(program)) {
10161009 if (!isFileUrl) {
10171010 scriptCache->addScriptToBadScriptList(scriptOrURL);
10181011 }
@@ -1027,9 +1020,9 @@ void ScriptEngine::entityScriptContentAvailable(const EntityItemID& entityID, co · 8 unmodified lines
10271020 QScriptValue testConstructor = sandbox.evaluate(contents);
10281021
10291022 if (!testConstructor.isFunction()) {
1030− qCDebug(scriptengine) << "ScriptEngine::loadEntityScript() entity:" << entityID;
1031− qCDebug(scriptengine) << " NOT CONSTRUCTOR";
1032− qCDebug(scriptengine) << " SCRIPT:" << scriptOrURL;
1023+ qCDebug(scriptengine) << "ScriptEngine::loadEntityScript() entity:" << entityID << "\n"
1024+ " NOT CONSTRUCTOR\n"
1025+ " SCRIPT:" << scriptOrURL;
10331026 if (!isFileUrl) {
10341027 scriptCache->addScriptToBadScriptList(scriptOrURL);
10351028 }
@@ -1042,7 +1035,6 @@ void ScriptEngine::entityScriptContentAvailable(const EntityItemID& entityID, co · 6 unmodified lines
10421035 lastModified = (quint64)QFileInfo(file).lastModified().toMSecsSinceEpoch();
10431036 }
10441037
1045− auto fileName = QString("(EntityID:%1, %2)").arg(entityID.toString(), isURL ? scriptOrURL : "EmbededEntityScript");
10461038 QScriptValue entityScriptConstructor = evaluate(contents, fileName);
10471039 QScriptValue entityScriptObject = entityScriptConstructor.construct();
10481040 EntityScriptDetails newDetails = { scriptOrURL, entityScriptObject, lastModified };