History

Fix crash on shutdown due to lifetime of scripts

Brad Davis committed 10 years ago

Commit 55af5ea1 parent 8619be23 files · +12 −4Browse files

Showing the changes to libraries/script-engine/src/ScriptEngines.cpp (1 of 3 files). Show all

Unified · Split

libraries/script-engine/src/ScriptEngines.cpp+10−1
@@ -112,6 +112,8 @@ void ScriptEngines::shutdownScripting() { · 111 unmodified lines
112112 scriptEngine->waitTillDoneRunning();
113113 qCDebug(scriptengine) << "done waiting on script:" << scriptName;
114114
115+ scriptEngine->deleteLater();
116+
115117 // If the script is stopped, we can remove it from our set
116118 i.remove();
117119 }
@@ -343,6 +345,10 @@ ScriptEngine* ScriptEngines::loadScript(const QString& scriptFilename, bool isUs · 225 unmodified lines
343345
344346 scriptEngine = new ScriptEngine(NO_SCRIPT, "", true);
345347 scriptEngine->setUserLoaded(isUserLoaded);
348+ connect(scriptEngine, &ScriptEngine::doneRunning, this, [scriptEngine] {
349+ scriptEngine->deleteLater();
350+ }, Qt::QueuedConnection);
351+
346352
347353 if (scriptFilename.isNull()) {
348354 launchScriptEngine(scriptEngine);
@@ -431,5 +437,8 @@ QString ScriptEngines::getPreviousScriptLocation() const { · 82 unmodified lines
431437 }
432438
433439 void ScriptEngines::setPreviousScriptLocation(const QString& previousScriptLocation) {
434− _previousScriptLocation.set(previousScriptLocation);
440+ if (_previousScriptLocation.get() != previousScriptLocation) {
441+ _previousScriptLocation.set(previousScriptLocation);
442+ emit previousScriptLocationChanged();
443+ }
435444 }