From f275346ecc6bccb5d9cdf56e4e553ff45e941f50 Mon Sep 17 00:00:00 2001 From: Klaus Schmidinger Date: Tue, 14 Dec 2021 21:15:02 +0100 Subject: [PATCH] Fixed a memory leak in handling the NIT --- CONTRIBUTORS | 1 + HISTORY | 3 ++- nit.c | 4 +++- 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/CONTRIBUTORS b/CONTRIBUTORS index 22ea4589..3ec812ce 100644 --- a/CONTRIBUTORS +++ b/CONTRIBUTORS @@ -3667,6 +3667,7 @@ Helmut Binder for fixing flushing old data from the section handler for removing unused declaration of cDvbTuner::SetFrontendType() for fixing handling incomplete multi-packet CAT + for fixing a memory leak in handling the NIT Ulrich Eckhardt for reporting a problem with shutdown after user inactivity in case a plugin is diff --git a/HISTORY b/HISTORY index 827d562c..60bbb78c 100644 --- a/HISTORY +++ b/HISTORY @@ -9737,7 +9737,7 @@ Video Disk Recorder Revision History - The Recordings menu now marks recordings with errors with an exclamation mark ('!'), and the number of errors (if any) is displayed in the recording's Info menu. -2021-12-11: +2021-12-14: - Replaced all umlauts in the example channels.conf with their ae, oe, ue substitutes to avoid problems on UTF-8 systems. @@ -9745,3 +9745,4 @@ Video Disk Recorder Revision History Haubrich). - Fixed unlocking vs. call to EpgHandlers.EndSegmentTransfer() (reported by Christoph Haubrich). +- Fixed a memory leak in handling the NIT (thanks to Helmut Binder). diff --git a/nit.c b/nit.c index 980a3b2d..1985fc47 100644 --- a/nit.c +++ b/nit.c @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: nit.c 5.1 2021/03/16 15:10:54 kls Exp $ + * $Id: nit.c 5.2 2021/12/14 21:15:02 kls Exp $ */ #include "nit.h" @@ -100,8 +100,10 @@ void cNitFilter::Process(u_short Pid, u_char Tid, const u_char *Data, int Length for (SI::Loop::Iterator it2; (d = ts.transportStreamDescriptors.getNext(it2)); ) { if (d->getDescriptorTag() == SI::S2SatelliteDeliverySystemDescriptorTag) { ForceDVBS2 = true; + delete d; break; } + delete d; } for (SI::Loop::Iterator it2; (d = ts.transportStreamDescriptors.getNext(it2)); ) {