Fixed a possible segfault if VDR gets terminated while a message is displayed

This commit is contained in:
Klaus Schmidinger 2007-01-04 13:11:52 +01:00
parent e72bff8938
commit dcff08512e
5 changed files with 21 additions and 4 deletions

View File

@ -1477,6 +1477,7 @@ Udo Richter <udo_richter@gmx.de>
false and not actually kill the thread if the special value -1 is given false and not actually kill the thread if the special value -1 is given
or fixing a possible segfault in cSkins::Message() or fixing a possible segfault in cSkins::Message()
for some hints on how to improve handling cPluginManager::Active() 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 <svenk@kammer.uni-hannover.de> Sven Kreiensen <svenk@kammer.uni-hannover.de>
for his help in keeping 'channels.conf.terr' up to date for his help in keeping 'channels.conf.terr' up to date

View File

@ -5015,3 +5015,8 @@ Video Disk Recorder Revision History
- Added a compatibility define for 'uint64' to tools.h, so that existing - Added a compatibility define for 'uint64' to tools.h, so that existing
plugins don't need to be modified immediately (reported by Suur Karu). plugins don't need to be modified immediately (reported by Suur Karu).
This will be removed in version 1.5. 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).

View File

@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and * See the main source file 'vdr.c' for copyright information and
* how to reach the author. * 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 #ifndef __CONFIG_H
@ -21,7 +21,7 @@
// VDR's own version number: // 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 #define VDRVERSNUM 10404 // Version * 10000 + Major * 100 + Minor
// The plugin API's version number: // The plugin API's version number:

11
skins.c
View File

@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and * See the main source file 'vdr.c' for copyright information and
* how to reach the author. * 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" #include "skins.h"
@ -358,3 +358,12 @@ void cSkins::Flush(void)
if (cSkinDisplay::Current()) if (cSkinDisplay::Current())
cSkinDisplay::Current()->Flush(); cSkinDisplay::Current()->Flush();
} }
void cSkins::Clear(void)
{
if (displayMessage) {
delete displayMessage;
displayMessage = NULL;
}
cList<cSkin>::Clear();
}

View File

@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and * See the main source file 'vdr.c' for copyright information and
* how to reach the author. * 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 #ifndef __SKINS_H
@ -360,6 +360,8 @@ public:
///< Processes the first queued message, if any. ///< Processes the first queued message, if any.
void Flush(void); void Flush(void);
///< Flushes the currently active cSkinDisplay, if any. ///< Flushes the currently active cSkinDisplay, if any.
virtual void Clear(void);
///< Free up all registered skins
}; };
extern cSkins Skins; extern cSkins Skins;