summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKlaus Schmidinger <vdr@tvdr.de>2006-04-29 11:40:37 +0200
committerKlaus Schmidinger <vdr@tvdr.de>2006-04-29 11:40:37 +0200
commit56468f72ad2b2bd5a5adc4b6980949d077ec2238 (patch)
tree44dca3c5f95ccf74d25fe3d863d6b36fb80c8389
parentb42e1f73dba587bd89536f33e5cc4e12160ee48b (diff)
downloadvdr-56468f72ad2b2bd5a5adc4b6980949d077ec2238.tar.gz
vdr-56468f72ad2b2bd5a5adc4b6980949d077ec2238.tar.bz2
Fixed a memory leak in handling external EPG data
-rw-r--r--CONTRIBUTORS1
-rw-r--r--HISTORY1
-rw-r--r--eit.c6
3 files changed, 6 insertions, 2 deletions
diff --git a/CONTRIBUTORS b/CONTRIBUTORS
index 946faef4..0f82d14e 100644
--- a/CONTRIBUTORS
+++ b/CONTRIBUTORS
@@ -1863,6 +1863,7 @@ Richard Lithvall <richard@lithvall.se>
Tobias Grimm <listaccount@e-tobi.net>
for suggesting to use geteuid() to check whether VDR is running as user 'root'
+ for fixing a memory leak in handling external EPG data
Helge Lenz <h.lenz@gmx.de>
for reporting a bug in setting the 'Delta' parameter when calling the shutdown
diff --git a/HISTORY b/HISTORY
index 2eeb5d0e..ca596c7e 100644
--- a/HISTORY
+++ b/HISTORY
@@ -4683,3 +4683,4 @@ Video Disk Recorder Revision History
- Fixed handling the "Power" key in case a recording is going on and no plugin
is active (thanks to Udo Richter; bug reported by Dominique Simon).
- Updated the Polish OSD texts (thanks to Jaroslaw Swierczynski).
+- Fixed a memory leak in handling external EPG data (thanks to Tobias Grimm).
diff --git a/eit.c b/eit.c
index c33dbefc..39567f8c 100644
--- a/eit.c
+++ b/eit.c
@@ -8,7 +8,7 @@
* Robert Schneider <Robert.Schneider@web.de> and Rolf Hakenes <hakenes@hippomi.de>.
* Adapted to 'libsi' for VDR 1.3.0 by Marcel Wiesweg <marcel.wiesweg@gmx.de>.
*
- * $Id: eit.c 1.116 2006/04/15 14:11:52 kls Exp $
+ * $Id: eit.c 1.117 2006/04/29 11:38:37 kls Exp $
*/
#include "eit.h"
@@ -103,8 +103,10 @@ cEIT::cEIT(cSchedules *Schedules, int Source, u_char Tid, const u_char *Data)
cLinkChannels *LinkChannels = NULL;
cComponents *Components = NULL;
for (SI::Loop::Iterator it2; (d = SiEitEvent.eventDescriptors.getNext(it2)); ) {
- if (ExternalData && d->getDescriptorTag() != SI::ComponentDescriptorTag)
+ if (ExternalData && d->getDescriptorTag() != SI::ComponentDescriptorTag) {
+ delete d;
continue;
+ }
switch (d->getDescriptorTag()) {
case SI::ExtendedEventDescriptorTag: {
SI::ExtendedEventDescriptor *eed = (SI::ExtendedEventDescriptor *)d;