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
1157 _objectLifetime.Reset(isolate, lifetime.get());1157 _objectLifetime.Reset(isolate, lifetime.get());
1158 _objectLifetime.SetWeak(this, weakHandleCallback, v8::WeakCallbackType::kParameter);1158 _objectLifetime.SetWeak(this, weakHandleCallback, v8::WeakCallbackType::kParameter);
1159 _v8Context.Reset(isolate, _engine->getContext());1159 _v8Context.Reset(isolate, _engine->getContext());
1160 _engine->_signalProxySetLock.lockForWrite();
1161 _engine->_signalProxySet.insert(this);
1162 _engine->_signalProxySetLock.unlock();
1160}1163}
1161 1164
1162ScriptSignalV8Proxy::~ScriptSignalV8Proxy() {1165ScriptSignalV8Proxy::~ScriptSignalV8Proxy() {
@@ -1166,6 +1169,12 @@ ScriptSignalV8Proxy::~ScriptSignalV8Proxy() { · 3 unmodified lines
1166 v8::HandleScope handleScope(isolate);1169 v8::HandleScope handleScope(isolate);
1167 _objectLifetime.Reset();1170 _objectLifetime.Reset();
1168 _v8Context.Reset();1171 _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();
1169}1178}
1170 1179
1171void ScriptSignalV8Proxy::weakHandleCallback(const v8::WeakCallbackInfo<ScriptSignalV8Proxy>& info) {1180void ScriptSignalV8Proxy::weakHandleCallback(const v8::WeakCallbackInfo<ScriptSignalV8Proxy>& info) {