History

Fix most of the crash causes on script engine reload/shutdown

Karol Suprynowicz committed 3 years ago

Commit 166f7221 parent d62a40d25 files · +221 −83Browse files

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

Unified · Split

libraries/script-engine/src/v8/ScriptObjectV8Proxy.cpp+9−0
@@ -1157,6 +1157,9 @@ ScriptSignalV8Proxy::ScriptSignalV8Proxy(ScriptEngineV8* engine, QObject* object · 1156 unmodified lines
11571157 _objectLifetime.Reset(isolate, lifetime.get());
11581158 _objectLifetime.SetWeak(this, weakHandleCallback, v8::WeakCallbackType::kParameter);
11591159 _v8Context.Reset(isolate, _engine->getContext());
1160+ _engine->_signalProxySetLock.lockForWrite();
1161+ _engine->_signalProxySet.insert(this);
1162+ _engine->_signalProxySetLock.unlock();
11601163 }
11611164
11621165 ScriptSignalV8Proxy::~ScriptSignalV8Proxy() {
@@ -1166,6 +1169,12 @@ ScriptSignalV8Proxy::~ScriptSignalV8Proxy() { · 3 unmodified lines
11661169 v8::HandleScope handleScope(isolate);
11671170 _objectLifetime.Reset();
11681171 _v8Context.Reset();
1172+#ifdef OVERTE_SCRIPT_USE_AFTER_DELETE_GUARD
1173+ Q_ASSERT(!_engine->_wasDestroyed);
1174+#endif
1175+ _engine->_signalProxySetLock.lockForWrite();
1176+ _engine->_signalProxySet.remove(this);
1177+ _engine->_signalProxySetLock.unlock();
11691178 }
11701179
11711180 void ScriptSignalV8Proxy::weakHandleCallback(const v8::WeakCallbackInfo<ScriptSignalV8Proxy>& info) {