From 746f97a0e07480fd1c4eb8d25b72d5639f86896b Mon Sep 17 00:00:00 2001 From: David Rowe Date: Thu, 29 Aug 2019 13:33:04 +1200 Subject: [PATCH 1/2] Fix crash in Assets.getAsset() when callback undefined --- libraries/script-engine/src/AssetScriptingInterface.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/libraries/script-engine/src/AssetScriptingInterface.cpp b/libraries/script-engine/src/AssetScriptingInterface.cpp index e389bd8446..9dd19f763e 100644 --- a/libraries/script-engine/src/AssetScriptingInterface.cpp +++ b/libraries/script-engine/src/AssetScriptingInterface.cpp @@ -249,8 +249,11 @@ void AssetScriptingInterface::getAsset(QScriptValue options, QScriptValue scope, QString("Invalid responseType: '%1' (expected: %2)").arg(responseType).arg(RESPONSE_TYPES.join(" | "))); Promise fetched = jsPromiseReady(makePromise("fetched"), scope, callback); - Promise mapped = makePromise("mapped"); + if (!fetched) { + return; + } + Promise mapped = makePromise("mapped"); mapped->fail(fetched); mapped->then([=](QVariantMap result) { QString hash = result.value("hash").toString(); From fb818c0726d32b4fb41788b6332a475da9661adf Mon Sep 17 00:00:00 2001 From: David Rowe Date: Thu, 29 Aug 2019 13:33:22 +1200 Subject: [PATCH 2/2] Fix crash in Assets.setBakingEnabled() when callback undefined --- libraries/script-engine/src/AssetScriptingInterface.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/libraries/script-engine/src/AssetScriptingInterface.cpp b/libraries/script-engine/src/AssetScriptingInterface.cpp index 9dd19f763e..689b4b89ea 100644 --- a/libraries/script-engine/src/AssetScriptingInterface.cpp +++ b/libraries/script-engine/src/AssetScriptingInterface.cpp @@ -127,6 +127,9 @@ void AssetScriptingInterface::setBakingEnabled(QString path, bool enabled, QScri auto setBakingEnabledRequest = DependencyManager::get()->createSetBakingEnabledRequest({ path }, enabled); Promise deferred = jsPromiseReady(makePromise(__FUNCTION__), thisObject(), callback); + if (!deferred) { + return; + } connect(setBakingEnabledRequest, &SetBakingEnabledRequest::finished, setBakingEnabledRequest, [deferred](SetBakingEnabledRequest* request) { Q_ASSERT(QThread::currentThread() == request->thread());