cid#1557258 Data race condition

Change-Id: Iaf4fdba3696669763511aa476e53a0fea36a05c0
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/177589
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>
This commit is contained in:
Caolán McNamara 2024-11-29 21:45:48 +00:00
parent fb30ee5a63
commit 6fd05636e2

View file

@ -260,12 +260,15 @@ void TimerScheduler::CancelTask (const sal_Int32 nTaskId)
void TimerScheduler::NotifyTermination()
{
std::shared_ptr<TimerScheduler> const pInstance(TimerScheduler::mpInstance);
if (!pInstance)
std::shared_ptr<TimerScheduler> pInstance;
{
return;
std::scoped_lock aGuard (maInstanceMutex);
pInstance = TimerScheduler::mpInstance;
}
if (!pInstance)
return;
{
std::scoped_lock aGuard(pInstance->maTaskContainerMutex);
pInstance->maScheduledTasks.clear();
@ -274,9 +277,7 @@ void TimerScheduler::NotifyTermination()
{
std::scoped_lock aGuard(pInstance->maCurrentTaskMutex);
if (pInstance->mpCurrentTask)
{
pInstance->mpCurrentTask->mbIsCanceled = true;
}
}
pInstance->m_Shutdown.set();