summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDave <vdr@pickles.me.uk>2011-07-20 10:24:26 +0100
committerDave <vdr@pickles.me.uk>2011-07-20 10:24:26 +0100
commit3b19e950114aae28d0b75b7b714bbc66c08ba951 (patch)
tree96aad028ffd5d9c3920f5710a90c84ded61572db
parente3b0193c5f0e8996ec33ba4386b4effec6fcc077 (diff)
downloadvdrtva-3b19e950114aae28d0b75b7b714bbc66c08ba951.tar.gz
vdrtva-3b19e950114aae28d0b75b7b714bbc66c08ba951.tar.bz2
Fixed memory leak (thanks Laz).
Don't save CRIDs for channels we can't receive.
-rw-r--r--vdrtva-1.7.19.diff96
1 files changed, 51 insertions, 45 deletions
diff --git a/vdrtva-1.7.19.diff b/vdrtva-1.7.19.diff
index 689f623..eb5fd9d 100644
--- a/vdrtva-1.7.19.diff
+++ b/vdrtva-1.7.19.diff
@@ -1,6 +1,6 @@
-diff -ur vdr-1.7.19/channels.c vdr-1.7/channels.c
---- vdr-1.7.19/channels.c 2010-11-07 12:24:59.000000000 +0000
-+++ vdr-1.7/channels.c 2011-06-19 11:57:15.000000000 +0100
+diff -u vdr-1.7.19//channels.c vdr-1.7//channels.c
+--- vdr-1.7.19//channels.c 2010-11-07 12:24:59.000000000 +0000
++++ vdr-1.7//channels.c 2011-06-19 11:57:15.000000000 +0100
@@ -61,6 +61,7 @@
shortName = strdup("");
provider = strdup("");
@@ -97,9 +97,9 @@ diff -ur vdr-1.7.19/channels.c vdr-1.7/channels.c
if (!GetChannelID().Valid()) {
esyslog("ERROR: channel data results in invalid ID!");
return false;
-diff -ur vdr-1.7.19/channels.h vdr-1.7/channels.h
---- vdr-1.7.19/channels.h 2010-06-05 14:12:54.000000000 +0100
-+++ vdr-1.7/channels.h 2011-06-19 11:57:15.000000000 +0100
+diff -u vdr-1.7.19//channels.h vdr-1.7//channels.h
+--- vdr-1.7.19//channels.h 2010-06-05 14:12:54.000000000 +0100
++++ vdr-1.7//channels.h 2011-06-19 11:57:15.000000000 +0100
@@ -96,6 +96,7 @@
char *shortName;
char *provider;
@@ -124,9 +124,9 @@ diff -ur vdr-1.7.19/channels.h vdr-1.7/channels.h
void SetPids(int Vpid, int Ppid, int Vtype, int *Apids, int *Atypes, char ALangs[][MAXLANGCODE2], int *Dpids, int *Dtypes, char DLangs[][MAXLANGCODE2], int *Spids, char SLangs[][MAXLANGCODE2], int Tpid);
void SetCaIds(const int *CaIds); // list must be zero-terminated
void SetCaDescriptors(int Level);
-diff -ur vdr-1.7.19/config.c vdr-1.7/config.c
---- vdr-1.7.19/config.c 2011-06-13 15:41:01.000000000 +0100
-+++ vdr-1.7/config.c 2011-06-19 11:57:15.000000000 +0100
+diff -u vdr-1.7.19//config.c vdr-1.7//config.c
+--- vdr-1.7.19//config.c 2011-06-13 15:41:01.000000000 +0100
++++ vdr-1.7//config.c 2011-06-19 11:57:15.000000000 +0100
@@ -353,6 +353,7 @@
UseSubtitle = 1;
UseVps = 0;
@@ -151,9 +151,9 @@ diff -ur vdr-1.7.19/config.c vdr-1.7/config.c
Store("RecordingDirs", RecordingDirs);
Store("FoldersInTimerMenu", FoldersInTimerMenu);
Store("NumberKeysForChars", NumberKeysForChars);
-diff -ur vdr-1.7.19/config.h vdr-1.7/config.h
---- vdr-1.7.19/config.h 2011-06-13 15:24:40.000000000 +0100
-+++ vdr-1.7/config.h 2011-06-19 11:57:15.000000000 +0100
+diff -u vdr-1.7.19//config.h vdr-1.7//config.h
+--- vdr-1.7.19//config.h 2011-06-13 15:24:40.000000000 +0100
++++ vdr-1.7//config.h 2011-06-19 11:57:15.000000000 +0100
@@ -252,6 +252,7 @@
int UseSubtitle;
int UseVps;
@@ -162,10 +162,10 @@ diff -ur vdr-1.7.19/config.h vdr-1.7/config.h
int RecordingDirs;
int FoldersInTimerMenu;
int NumberKeysForChars;
-diff -ur vdr-1.7.19/eit.c vdr-1.7/eit.c
---- vdr-1.7.19/eit.c 2010-05-14 15:08:35.000000000 +0100
-+++ vdr-1.7/eit.c 2011-06-19 11:57:15.000000000 +0100
-@@ -265,6 +265,27 @@
+diff -u vdr-1.7.19//eit.c vdr-1.7//eit.c
+--- vdr-1.7.19//eit.c 2010-05-14 15:08:35.000000000 +0100
++++ vdr-1.7//eit.c 2011-07-20 10:14:54.000000000 +0100
+@@ -265,6 +265,33 @@
}
}
break;
@@ -176,26 +176,32 @@ diff -ur vdr-1.7.19/eit.c vdr-1.7/eit.c
+ if (cde.getCridLocation() == 0) {
+ char buffer[Utf8BufSize(256)];
+ strcpy (buffer, channel->DefaultAuthority());
-+ strcat(buffer, cde.identifier.getText());
-+ switch (cde.getCridType()) {
-+ case 0x01:
-+ case 0x31:
-+ pEvent->SetItemCRID(buffer);
-+ break;
-+ case 0x02:
-+ case 0x32:
-+ pEvent->SetSeriesCRID(buffer);
-+ break;
-+ }
++ int i = strlen(buffer);
++ if (i) {
++ cde.identifier.getText(buffer+i, Utf8BufSize(256)-i);
++ switch (cde.getCridType()) {
++ case 0x01: // ETSI 102 363 code
++ case 0x31: // UK Freeview private code
++ pEvent->SetItemCRID(buffer);
++ break;
++ case 0x02: // ETSI 102 363 code
++ case 0x32: // UK Freeview private code
++ pEvent->SetSeriesCRID(buffer);
++ break;
++ // ETSI 102 323 defines CRID type 0x03, which describes 'related' or 'suggested' events.
++ // Freeview broadcasts these as CRID type 0x33.
++ // There can be more than one type 0x33 descriptor per event (each with one CRID).
++ }
++ }
+ }
+ }
+ }
default: ;
}
delete d;
-diff -ur vdr-1.7.19/epg.c vdr-1.7/epg.c
---- vdr-1.7.19/epg.c 2011-02-25 15:16:05.000000000 +0000
-+++ vdr-1.7/epg.c 2011-06-19 11:57:15.000000000 +0100
+diff -u vdr-1.7.19//epg.c vdr-1.7//epg.c
+--- vdr-1.7.19//epg.c 2011-02-25 15:16:05.000000000 +0000
++++ vdr-1.7//epg.c 2011-07-17 10:45:04.000000000 +0100
@@ -126,6 +126,8 @@
startTime = 0;
duration = 0;
@@ -253,9 +259,9 @@ diff -ur vdr-1.7.19/epg.c vdr-1.7/epg.c
default: esyslog("ERROR: unexpected tag while reading EPG data: %s", s);
return false;
}
-diff -ur vdr-1.7.19/epg.h vdr-1.7/epg.h
---- vdr-1.7.19/epg.h 2011-02-25 14:14:38.000000000 +0000
-+++ vdr-1.7/epg.h 2011-06-19 11:57:15.000000000 +0100
+diff -u vdr-1.7.19//epg.h vdr-1.7//epg.h
+--- vdr-1.7.19//epg.h 2011-02-25 14:14:38.000000000 +0000
++++ vdr-1.7//epg.h 2011-06-19 11:57:15.000000000 +0100
@@ -86,6 +86,8 @@
int duration; // Duration of this event in seconds
time_t vps; // Video Programming Service timestamp (VPS, aka "Programme Identification Label", PIL)
@@ -283,9 +289,9 @@ diff -ur vdr-1.7.19/epg.h vdr-1.7/epg.h
void SetSeen(void);
cString ToDescr(void) const;
void Dump(FILE *f, const char *Prefix = "", bool InfoOnly = false) const;
-diff -ur vdr-1.7.19/menu.c vdr-1.7/menu.c
---- vdr-1.7.19/menu.c 2011-02-27 12:37:48.000000000 +0000
-+++ vdr-1.7/menu.c 2011-06-19 11:57:15.000000000 +0100
+diff -u vdr-1.7.19//menu.c vdr-1.7//menu.c
+--- vdr-1.7.19//menu.c 2011-02-27 12:37:48.000000000 +0000
++++ vdr-1.7//menu.c 2011-06-19 11:57:15.000000000 +0100
@@ -3057,6 +3057,7 @@
Add(new cMenuEditBoolItem(tr("Setup.Recording$Use episode name"), &data.UseSubtitle));
Add(new cMenuEditBoolItem(tr("Setup.Recording$Use VPS"), &data.UseVps));
@@ -294,9 +300,9 @@ diff -ur vdr-1.7.19/menu.c vdr-1.7/menu.c
Add(new cMenuEditBoolItem(tr("Setup.Recording$Mark instant recording"), &data.MarkInstantRecord));
Add(new cMenuEditStrItem( tr("Setup.Recording$Name instant recording"), data.NameInstantRecord, sizeof(data.NameInstantRecord)));
Add(new cMenuEditIntItem( tr("Setup.Recording$Instant rec. time (min)"), &data.InstantRecordTime, 1, MAXINSTANTRECTIME));
-diff -ur vdr-1.7.19/sdt.c vdr-1.7/sdt.c
---- vdr-1.7.19/sdt.c 2010-05-16 15:23:21.000000000 +0100
-+++ vdr-1.7/sdt.c 2011-06-19 11:57:15.000000000 +0100
+diff -u vdr-1.7.19//sdt.c vdr-1.7//sdt.c
+--- vdr-1.7.19//sdt.c 2010-05-16 15:23:21.000000000 +0100
++++ vdr-1.7//sdt.c 2011-06-19 11:57:15.000000000 +0100
@@ -128,6 +128,12 @@
}
}
@@ -310,9 +316,9 @@ diff -ur vdr-1.7.19/sdt.c vdr-1.7/sdt.c
default: ;
}
delete d;
-diff -ur vdr-1.7.19/timers.c vdr-1.7/timers.c
---- vdr-1.7.19/timers.c 2010-01-16 11:18:53.000000000 +0000
-+++ vdr-1.7/timers.c 2011-06-19 11:57:15.000000000 +0100
+diff -u vdr-1.7.19//timers.c vdr-1.7//timers.c
+--- vdr-1.7.19//timers.c 2010-01-16 11:18:53.000000000 +0000
++++ vdr-1.7//timers.c 2011-06-19 11:57:15.000000000 +0100
@@ -423,7 +423,7 @@
}
@@ -322,9 +328,9 @@ diff -ur vdr-1.7.19/timers.c vdr-1.7/timers.c
if (Margin || !Directly) {
startTime = event->StartTime();
stopTime = event->EndTime();
-diff -ur vdr-1.7.19/vdr.5 vdr-1.7/vdr.5
---- vdr-1.7.19/vdr.5 2011-04-03 11:21:36.000000000 +0100
-+++ vdr-1.7/vdr.5 2011-06-19 11:57:15.000000000 +0100
+diff -u vdr-1.7.19//vdr.5 vdr-1.7//vdr.5
+--- vdr-1.7.19//vdr.5 2011-04-03 11:21:36.000000000 +0100
++++ vdr-1.7//vdr.5 2011-06-19 11:57:15.000000000 +0100
@@ -247,6 +247,9 @@
.B RID
The Radio ID of this channel (typically 0, may be used to distinguish channels where