summaryrefslogtreecommitdiff
path: root/src/declarative/qml/qdeclarativeworkerscript.cpp
diff options
context:
space:
mode:
authorChris Adams <christopher.adams@nokia.com>2011-10-07 10:01:40 +1000
committerQt by Nokia <qt-info@nokia.com>2011-10-10 05:47:37 +0200
commitd0f118d311ec7d051360fb406f5daada2bf4fba7 (patch)
treeee097697c35c3b6b5205453adf8b514da6a89b57 /src/declarative/qml/qdeclarativeworkerscript.cpp
parentca47f27900f6f0ebc35f87a28746376475212249 (diff)
downloadqtdeclarative-d0f118d311ec7d051360fb406f5daada2bf4fba7.tar.gz
Fix crashes caused by handle management in worker threads
Previously, the QV8Engine destructor and the QV8Engine's QV8GCCallback Referencer destructor would crash if run after the v8 isolate had been exited and disposed. This commit Q_ASSERTs if the worker thread attempts to do so, and adds a cleanup function which worker threads should call just prior to exiting the isolate. Task-number: QTBUG-21866 Change-Id: I379b02e24ad9378e4bfc270fb9208715b6f7b60a Reviewed-on: http://codereview.qt-project.org/6202 Reviewed-by: Toby Tomkins <toby.tomkins@nokia.com> Sanity-Review: Qt Sanity Bot <qt_sanity_bot@ovi.com> Reviewed-by: Aaron Kennedy <aaron.kennedy@nokia.com>
Diffstat (limited to 'src/declarative/qml/qdeclarativeworkerscript.cpp')
-rw-r--r--src/declarative/qml/qdeclarativeworkerscript.cpp3
1 files changed, 2 insertions, 1 deletions
diff --git a/src/declarative/qml/qdeclarativeworkerscript.cpp b/src/declarative/qml/qdeclarativeworkerscript.cpp
index e6af0ba964..c6425d087c 100644
--- a/src/declarative/qml/qdeclarativeworkerscript.cpp
+++ b/src/declarative/qml/qdeclarativeworkerscript.cpp
@@ -59,6 +59,7 @@
#include <private/qv8engine_p.h>
#include <private/qv8worker_p.h>
+#include <private/qv8gccallback_p.h>
QT_BEGIN_NAMESPACE
@@ -542,7 +543,7 @@ void QDeclarativeWorkerScriptEngine::run()
d->workers.clear();
delete d->workerEngine; d->workerEngine = 0;
-
+ QV8GCCallback::releaseWorkerThreadGcPrologueCallbackData();
isolate->Exit();
isolate->Dispose();
}