History

Fixed object containing UniquePersistent

ksuprynowicz committed 3 years ago

Commit 8e718261 parent 9fd2f4e6 files · +39 −1Browse files

Showing the changes to libraries/script-engine/src/v8/ScriptObjectV8Proxy.cpp (1 of 6 files). Show all

Unified · Split

libraries/script-engine/src/v8/ScriptObjectV8Proxy.cpp+22−0
@@ -203,6 +203,11 @@ QObject* ScriptObjectV8Proxy::unwrap(const V8ScriptValue& val) { · 202 unmodified lines
203203 }
204204
205205 ScriptObjectV8Proxy::~ScriptObjectV8Proxy() {
206+ auto isolate = _engine->getIsolate();
207+ v8::Locker locker(isolate);
208+ v8::Isolate::Scope isolateScope(isolate);
209+ v8::HandleScope handleScope(isolate);
210+ _v8Object.Reset();
206211 if(_object) qDebug(scriptengine) << "Deleting object proxy: " << name();
207212 if (_ownsObject) {
208213 QObject* qobject = _object;
@@ -664,6 +669,15 @@ ScriptVariantV8Proxy::ScriptVariantV8Proxy(ScriptEngineV8* engine, const QVarian · 455 unmodified lines
664669 _name = QString::fromLatin1(variant.typeName());
665670 }
666671
672+ScriptVariantV8Proxy::~ScriptVariantV8Proxy() {
673+ auto isolate = _engine->getIsolate();
674+ v8::Locker locker(isolate);
675+ v8::Isolate::Scope isolateScope(isolate);
676+ v8::HandleScope handleScope(isolate);
677+ _v8ObjectTemplate.Reset();
678+ _v8Object.Reset();
679+}
680+
667681 V8ScriptValue ScriptVariantV8Proxy::newVariant(ScriptEngineV8* engine, const QVariant& variant, V8ScriptValue proto) {
668682 auto isolate = engine->getIsolate();
669683 v8::Locker locker(isolate);
@@ -1147,6 +1161,14 @@ void ScriptMethodV8Proxy::call(const v8::FunctionCallbackInfo<v8::Value>& argume · 477 unmodified lines
11471161 return QVariant();
11481162 }*/
11491163
1164+ScriptSignalV8Proxy::~ScriptSignalV8Proxy() {
1165+ auto isolate = _engine->getIsolate();
1166+ v8::Locker locker(isolate);
1167+ v8::Isolate::Scope isolateScope(isolate);
1168+ v8::HandleScope handleScope(isolate);
1169+ _v8Context.Reset();
1170+}
1171+
11501172 QString ScriptSignalV8Proxy::fullName() const {
11511173 Q_ASSERT(_object);
11521174 if (!_object) return "";