From 3ea107fd6c3a3ae976f3f95f46da924233d8c620 Mon Sep 17 00:00:00 2001 From: baldurk Date: Wed, 5 Oct 2016 16:51:43 +0200 Subject: [PATCH] Don't race to a double-delete, LambdaThread deletes its own thread --- qrenderdoc/Code/CaptureContext.h | 3 ++- qrenderdoc/Code/RenderManager.cpp | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/qrenderdoc/Code/CaptureContext.h b/qrenderdoc/Code/CaptureContext.h index 27c8cf32a..144de0322 100644 --- a/qrenderdoc/Code/CaptureContext.h +++ b/qrenderdoc/Code/CaptureContext.h @@ -230,6 +230,7 @@ public slots: m_Thread->quit(); deleteLater(); m_Thread->deleteLater(); + m_Thread = NULL; } public: @@ -242,7 +243,7 @@ public: } void start(QThread::Priority prio = QThread::InheritPriority) { m_Thread->start(prio); } - bool isRunning() { return m_Thread->isRunning(); } + bool isRunning() { return m_Thread && m_Thread->isRunning(); } }; // helper for doing a manual blocking invoke of a dialog diff --git a/qrenderdoc/Code/RenderManager.cpp b/qrenderdoc/Code/RenderManager.cpp index 87bd4277b..e80079dae 100644 --- a/qrenderdoc/Code/RenderManager.cpp +++ b/qrenderdoc/Code/RenderManager.cpp @@ -94,7 +94,7 @@ void RenderManager::CloseThread() { } - m_Thread->deleteLater(); + // the thread deletes itself, don't delete here m_Thread = NULL; }