diff --git a/CONTRIBUTORS b/CONTRIBUTORS index 075fa03..33141a7 100644 --- a/CONTRIBUTORS +++ b/CONTRIBUTORS @@ -139,3 +139,6 @@ Valdemaras Pipiras sk8ter for fixing failures when switching between two encrypted channels + +lhanisch + for fixing a memory leak in cStreamdevPatFilter::GetPid diff --git a/HISTORY b/HISTORY index 4e83590..c4fe3b7 100644 --- a/HISTORY +++ b/HISTORY @@ -1,6 +1,7 @@ VDR Plugin 'streamdev' Revision History --------------------------------------- +- fixed a memory leak in cStreamdevPatFilter::GetPid (thanks to lhanisch) - length -1 is the correct value for streams in M3U playlists - switching between two encrypted channels on the same transponder didn't always work (thanks to sk8ter@vdrportal) diff --git a/server/livestreamer.c b/server/livestreamer.c index 7642f5f..3162fa2 100644 --- a/server/livestreamer.c +++ b/server/livestreamer.c @@ -174,14 +174,17 @@ int cStreamdevPatFilter::GetPid(SI::PMT::Stream& stream) case SI::AC3DescriptorTag: Dprintf("cStreamdevPatFilter PMT scanner: adding PID %d (%s) %s\n", stream.getPid(), psStreamTypes[stream.getStreamType()], "AC3"); + delete d; return stream.getPid(); case SI::TeletextDescriptorTag: Dprintf("cStreamdevPatFilter PMT scanner: adding PID %d (%s) %s\n", stream.getPid(), psStreamTypes[stream.getStreamType()], "Teletext"); + delete d; return stream.getPid(); case SI::SubtitlingDescriptorTag: Dprintf("cStreamdevPatFilter PMT scanner: adding PID %d (%s) %s\n", stream.getPid(), psStreamTypes[stream.getStreamType()], "DVBSUB"); + delete d; return stream.getPid(); default: Dprintf("cStreamdevPatFilter PMT scanner: NOT adding PID %d (%s) %s\n", @@ -214,6 +217,7 @@ int cStreamdevPatFilter::GetPid(SI::PMT::Stream& stream) stream.getPid(), stream.getStreamType(), d->getLength(), rawdata[2], rawdata[3], rawdata[4], rawdata[5]); + delete d; return stream.getPid(); } }