From b52fe9a7d504c8ddfe7d886ac86c36e2e25d52d7 Mon Sep 17 00:00:00 2001 From: ksuprynowicz Date: Thu, 16 Mar 2023 21:50:12 +0100 Subject: [PATCH] Fixed crash on starting in VR mode with V8 --- libraries/script-engine/src/v8/ScriptObjectV8Proxy.cpp | 1 + .../script-engine/src/v8/ScriptValueIteratorV8Wrapper.cpp | 5 +++++ 2 files changed, 6 insertions(+) diff --git a/libraries/script-engine/src/v8/ScriptObjectV8Proxy.cpp b/libraries/script-engine/src/v8/ScriptObjectV8Proxy.cpp index 791799c296..3f80a14fc8 100644 --- a/libraries/script-engine/src/v8/ScriptObjectV8Proxy.cpp +++ b/libraries/script-engine/src/v8/ScriptObjectV8Proxy.cpp @@ -163,6 +163,7 @@ ScriptObjectV8Proxy* ScriptObjectV8Proxy::unwrapProxy(const V8ScriptValue& val) //V8TODO This shouldn't cause problems but I'm not sure if it's ok //v8::HandleScope handleScope(const_cast(val.constGetIsolate())); auto v8Value = val.constGet(); + Q_ASSERT(!v8Value.IsEmpty()); if (v8Value->IsNullOrUndefined()) { return nullptr; } diff --git a/libraries/script-engine/src/v8/ScriptValueIteratorV8Wrapper.cpp b/libraries/script-engine/src/v8/ScriptValueIteratorV8Wrapper.cpp index bd12b161d8..83ccb25c53 100644 --- a/libraries/script-engine/src/v8/ScriptValueIteratorV8Wrapper.cpp +++ b/libraries/script-engine/src/v8/ScriptValueIteratorV8Wrapper.cpp @@ -83,6 +83,11 @@ V8ScriptValue V8ScriptValueIterator::value() { if (!_object.Get(isolate)->Get(context, propertyName->ToString(context).ToLocalChecked()).ToLocal(&v8Value)) { Q_ASSERT(false); } + //V8TODO: sometimes no value gets written to v8Value. This needs to be investigated and fixed. + if (v8Value.IsEmpty()) { + qDebug() << "V8ScriptValueIterator::value: value handle is empty for key: " << *v8::String::Utf8Value(isolate, propertyName->ToString(context).ToLocalChecked()); + v8Value = v8::Undefined(isolate); + } return V8ScriptValue(_engine, v8Value); }