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
203}203}
204 204
205ScriptObjectV8Proxy::~ScriptObjectV8Proxy() {205ScriptObjectV8Proxy::~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();
206 if(_object) qDebug(scriptengine) << "Deleting object proxy: " << name();211 if(_object) qDebug(scriptengine) << "Deleting object proxy: " << name();
207 if (_ownsObject) {212 if (_ownsObject) {
208 QObject* qobject = _object;213 QObject* qobject = _object;
@@ -664,6 +669,15 @@ ScriptVariantV8Proxy::ScriptVariantV8Proxy(ScriptEngineV8* engine, const QVarian · 455 unmodified lines
664 _name = QString::fromLatin1(variant.typeName());669 _name = QString::fromLatin1(variant.typeName());
665}670}
666 671
672ScriptVariantV8Proxy::~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
667V8ScriptValue ScriptVariantV8Proxy::newVariant(ScriptEngineV8* engine, const QVariant& variant, V8ScriptValue proto) {681V8ScriptValue ScriptVariantV8Proxy::newVariant(ScriptEngineV8* engine, const QVariant& variant, V8ScriptValue proto) {
668 auto isolate = engine->getIsolate();682 auto isolate = engine->getIsolate();
669 v8::Locker locker(isolate);683 v8::Locker locker(isolate);
@@ -1147,6 +1161,14 @@ void ScriptMethodV8Proxy::call(const v8::FunctionCallbackInfo<v8::Value>& argume · 477 unmodified lines
1147 return QVariant();1161 return QVariant();
1148}*/1162}*/
1149 1163
1164ScriptSignalV8Proxy::~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
1150QString ScriptSignalV8Proxy::fullName() const {1172QString ScriptSignalV8Proxy::fullName() const {
1151 Q_ASSERT(_object);1173 Q_ASSERT(_object);
1152 if (!_object) return "";1174 if (!_object) return "";