summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKlaus Schmidinger <vdr@tvdr.de>2007-01-04 13:11:52 +0100
committerKlaus Schmidinger <vdr@tvdr.de>2007-01-04 13:11:52 +0100
commitdcff08512e69a8eac5a6188c23fe56e8672fe5d4 (patch)
treeadc80297b879455561fc3f71905245c4bb6fa022
parente72bff8938efd6fe2b0a01219b75a8729191f07c (diff)
downloadvdr-dcff08512e69a8eac5a6188c23fe56e8672fe5d4.tar.gz
vdr-dcff08512e69a8eac5a6188c23fe56e8672fe5d4.tar.bz2
Fixed a possible segfault if VDR gets terminated while a message is displayed
-rw-r--r--CONTRIBUTORS1
-rw-r--r--HISTORY5
-rw-r--r--config.h4
-rw-r--r--skins.c11
-rw-r--r--skins.h4
5 files changed, 21 insertions, 4 deletions
diff --git a/CONTRIBUTORS b/CONTRIBUTORS
index 6a658220..628dd8a8 100644
--- a/CONTRIBUTORS
+++ b/CONTRIBUTORS
@@ -1477,6 +1477,7 @@ Udo Richter <udo_richter@gmx.de>
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 <svenk@kammer.uni-hannover.de>
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<cSkin>::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;