summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMiklos Vajna <vmiklos@collabora.co.uk>2018-06-28 11:43:35 +0200
committerMiklos Vajna <vmiklos@collabora.co.uk>2018-06-28 13:30:43 +0200
commitf4c73f90da2a2c31f0d29572180aa97e10c3dbad (patch)
tree5b3de8221a00f0ddf0e14416b0213939a76e8f98
parent0e0ceebc0d6facf803ad089ef38d559355407c54 (diff)
tdf#117866 cui personalization: fix a possible race
The case when the thread is re-scheduled exactly after checking for m_bExecute but before taking the solar mutex. Change-Id: I494c123a6225da60407391771622208c055ae49b Reviewed-on: https://gerrit.libreoffice.org/56585 Reviewed-by: Miklos Vajna <vmiklos@collabora.co.uk> Tested-by: Jenkins
-rw-r--r--cui/source/options/personalization.cxx6
1 files changed, 6 insertions, 0 deletions
diff --git a/cui/source/options/personalization.cxx b/cui/source/options/personalization.cxx
index f67c5644f6c5..cf7005b10ee7 100644
--- a/cui/source/options/personalization.cxx
+++ b/cui/source/options/personalization.cxx
@@ -99,7 +99,13 @@ SelectPersonaDialog::~SelectPersonaDialog()
void SelectPersonaDialog::dispose()
{
if (m_pSearchThread.is())
+ {
+ // Release the solar mutex, so the thread is not affected by the race
+ // when it's after the m_bExecute check but before taking the solar
+ // mutex.
+ SolarMutexReleaser aReleaser;
m_pSearchThread->join();
+ }
m_pEdit.clear();
m_pSearchButton.clear();