From 0d7dec04367a477a56891480c4d8264e1a2ef819 Mon Sep 17 00:00:00 2001 From: Christian Prochaska Date: Thu, 2 Aug 2018 14:37:58 +0200 Subject: [PATCH] qt5: destroy finished thread in 'QThread::start()' A 'QThread' can be reused when its execution is finished by calling 'QThread::start()' again. Before this commit, this created a new Genode thread, but did not destroy a previously finished Genode thread first. Fixes #2928 --- .../qtbase/src/corelib/thread/qthread_genode.cpp | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/repos/libports/src/lib/qt5/qtbase/src/corelib/thread/qthread_genode.cpp b/repos/libports/src/lib/qt5/qtbase/src/corelib/thread/qthread_genode.cpp index f0374bb7a2..ac42d87a7b 100644 --- a/repos/libports/src/lib/qt5/qtbase/src/corelib/thread/qthread_genode.cpp +++ b/repos/libports/src/lib/qt5/qtbase/src/corelib/thread/qthread_genode.cpp @@ -659,6 +659,19 @@ void QThread::start(Priority priority) if (d->running) return; +#ifdef Q_OS_GENODE + if (d->finished) { + /** + * Thread is to be restarted. + * + * Since a new Genode thread is going to be created below, the old one + * needs to be destroyed first. + */ + delete d->genode_thread; + d->genode_thread = 0; + } +#endif + d->running = true; d->finished = false; d->returnCode = 0;