From fa5c9f764a6edbaba9543365770b14992194a5d0 Mon Sep 17 00:00:00 2001 From: Klaus Schmidinger Date: Wed, 1 Jul 2020 15:05:17 +0200 Subject: [PATCH] Now setting currentDisplayChannel = NULL before calling cStatus::MsgOsdClear() in ~cDisplayChannel(), to avoid possible problems in case a plugin calls IsOpen() --- CONTRIBUTORS | 1 + HISTORY | 5 ++++- menu.c | 4 ++-- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/CONTRIBUTORS b/CONTRIBUTORS index c15ced33..cbac654d 100644 --- a/CONTRIBUTORS +++ b/CONTRIBUTORS @@ -3426,6 +3426,7 @@ Thomas Reufer for fixing regenerating the index of audio recordings for implementing the SVDRP commands 'LSTD' and 'PRIM' for adding some comments regarding font height + for reporting a possible problem with plugins calling IsOpen() in ~cDisplayChannel() Eike Sauer for reporting a problem with channels that need more than 5 TS packets for detecting diff --git a/HISTORY b/HISTORY index 266323ad..c478d6f5 100644 --- a/HISTORY +++ b/HISTORY @@ -9499,8 +9499,11 @@ Video Disk Recorder Revision History rendered the whole code branch inactive. Now this branch is only executed for devices that are not bonded. -2020-06-29: +2020-07-01: - Improved deleting plugins in case the plugin uses its own memory management (thanks to Winfried Köhler). Plugins that have been compiled with previous versions of VDR do not need to be recompiled, they will silently be handled as before. +- Now setting currentDisplayChannel = NULL before calling cStatus::MsgOsdClear() in + ~cDisplayChannel(), to avoid possible problems in case a plugin calls IsOpen() + (reported by Thomas Reufer). diff --git a/menu.c b/menu.c index baa93173..c0dceb38 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.82 2020/05/18 16:47:29 kls Exp $ + * $Id: menu.c 4.83 2020/07/01 15:05:17 kls Exp $ */ #include "menu.h" @@ -4686,8 +4686,8 @@ cDisplayChannel::cDisplayChannel(eKeys FirstKey) cDisplayChannel::~cDisplayChannel() { delete displayChannel; - cStatus::MsgOsdClear(); currentDisplayChannel = NULL; + cStatus::MsgOsdClear(); } void cDisplayChannel::DisplayChannel(void)