diff --git a/HISTORY b/HISTORY index 43af7192..ff5dfd11 100644 --- a/HISTORY +++ b/HISTORY @@ -9919,6 +9919,7 @@ Video Disk Recorder Revision History - A device is now always kept occupied if a timer is in VPS margin or needs the transponder (thanks to Markus Ehrnsperger). -2024-04-03: +2024-05-24: - Updated the Italian OSD texts (thanks to Diego Pierotto). +- Fixed a possible access of a deleted object in the EIT scanner. diff --git a/eitscan.c b/eitscan.c index 66355bf7..2f65725f 100644 --- a/eitscan.c +++ b/eitscan.c @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: eitscan.c 5.3 2024/03/10 11:16:29 kls Exp $ + * $Id: eitscan.c 5.4 2024/05/19 14:55:57 kls Exp $ */ #include "eitscan.h" @@ -147,7 +147,9 @@ void cEITScanner::Process(void) for (int i = 0; i < cDevice::NumDevices(); i++) { cDevice *Device = cDevice::GetDevice(i); if (Device && Device->ProvidesEIT()) { - for (cScanData *ScanData = scanList->First(); ScanData; ScanData = scanList->Next(ScanData)) { + cScanData *Next = NULL; + for (cScanData *ScanData = scanList->First(); ScanData; ScanData = Next) { + Next = scanList->Next(ScanData); const cChannel *Channel = ScanData->GetChannel(); if (Channel) { if (Device->IsTunedToTransponder(Channel))