diff --git a/CONTRIBUTORS b/CONTRIBUTORS index 6a658220..628dd8a8 100644 --- a/CONTRIBUTORS +++ b/CONTRIBUTORS @@ -1477,6 +1477,7 @@ Udo Richter false and not actually kill the thread if the special value -1 is given or fixing a possible segfault in cSkins::Message() for some hints on how to improve handling cPluginManager::Active() + for fixing a possible segfault if VDR gets terminated while a message is displayed Sven Kreiensen for his help in keeping 'channels.conf.terr' up to date diff --git a/HISTORY b/HISTORY index 5bb0f8eb..ffcaf776 100644 --- a/HISTORY +++ b/HISTORY @@ -5015,3 +5015,8 @@ Video Disk Recorder Revision History - Added a compatibility define for 'uint64' to tools.h, so that existing plugins don't need to be modified immediately (reported by Suur Karu). This will be removed in version 1.5. + +2007-01-04: Version 1.4.4-3 + +- Fixed a possible segfault if VDR gets terminated while a message is displayed + (thanks to Udo Richter). diff --git a/config.h b/config.h index 07ebbce5..23c96214 100644 --- a/config.h +++ b/config.h @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: config.h 1.280 2006/12/03 16:44:29 kls Exp $ + * $Id: config.h 1.281 2007/01/04 13:08:55 kls Exp $ */ #ifndef __CONFIG_H @@ -21,7 +21,7 @@ // VDR's own version number: -#define VDRVERSION "1.4.4-2" +#define VDRVERSION "1.4.4-3" #define VDRVERSNUM 10404 // Version * 10000 + Major * 100 + Minor // The plugin API's version number: diff --git a/skins.c b/skins.c index 34b26382..f442e5ad 100644 --- a/skins.c +++ b/skins.c @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: skins.c 1.12 2006/12/01 13:32:37 kls Exp $ + * $Id: skins.c 1.13 2007/01/04 13:08:55 kls Exp $ */ #include "skins.h" @@ -358,3 +358,12 @@ void cSkins::Flush(void) if (cSkinDisplay::Current()) cSkinDisplay::Current()->Flush(); } + +void cSkins::Clear(void) +{ + if (displayMessage) { + delete displayMessage; + displayMessage = NULL; + } + cList::Clear(); +} diff --git a/skins.h b/skins.h index 9a9ba570..a0f03880 100644 --- a/skins.h +++ b/skins.h @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: skins.h 1.14 2006/06/03 10:21:45 kls Exp $ + * $Id: skins.h 1.15 2007/01/04 13:08:55 kls Exp $ */ #ifndef __SKINS_H @@ -360,6 +360,8 @@ public: ///< Processes the first queued message, if any. void Flush(void); ///< Flushes the currently active cSkinDisplay, if any. + virtual void Clear(void); + ///< Free up all registered skins }; extern cSkins Skins;