From 196785ff054a3236747ac8ad0302300c052d377a Mon Sep 17 00:00:00 2001 From: Klaus Schmidinger Date: Mon, 18 May 2020 16:47:29 +0200 Subject: Fixed a possible crash in case replay is started and stopped in rapid sequence --- menu.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) (limited to 'menu.c') diff --git a/menu.c b/menu.c index 58c7763e..baa93173 100644 --- a/menu.c +++ b/menu.c @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: menu.c 4.81 2020/04/11 09:22:05 kls Exp $ + * $Id: menu.c 4.82 2020/05/18 16:47:29 kls Exp $ */ #include "menu.h" @@ -2731,7 +2731,8 @@ eOSState cMenuRecordingEdit::DeleteMarks(void) if (buttonDeleteMarks && Interface->Confirm(tr("Delete editing marks for this recording?"))) { if (cMarks::DeleteMarksFile(recording)) { SetHelpKeys(); - if (cControl *Control = cControl::Control(true)) { + cMutexLock ControlMutexLock; + if (cControl *Control = cControl::Control(ControlMutexLock, true)) { if (const cRecording *Recording = Control->GetRecording()) { if (strcmp(recording->FileName(), Recording->FileName()) == 0) Control->ClearEditingMarks(); @@ -4457,7 +4458,11 @@ bool cMenuMain::Update(bool Force) { bool result = false; - bool NewReplaying = cControl::Control() != NULL; + bool NewReplaying = false; + { + cMutexLock ControlMutexLock; + NewReplaying = cControl::Control(ControlMutexLock) != NULL; + } if (Force || NewReplaying != replaying) { replaying = NewReplaying; // Replay control: -- cgit v1.2.3