Fixed a crash after executing the SVDRP command CLRE, caused by dangling 'schedule' pointers from cChannel objects

This commit is contained in:
Klaus Schmidinger 2006-01-20 13:42:38 +01:00
parent ef385702d0
commit cd09f7a0df
3 changed files with 10 additions and 2 deletions

View File

@ -1667,3 +1667,6 @@ Francois-Xavier Kowalski <francois-xavier.kowalski@hp.com>
Franz Gangkofer <Franz.Gangkofer@cadsoft.de>
for reporting a problem with @plugin in keymacros.conf in case the named plugin
is not loaded
Malte Schröder <MalteSch@gmx.de>
for reporting a crash after executing the SVDRP command CLRE

View File

@ -4198,3 +4198,5 @@ Video Disk Recorder Revision History
the individual thread's pid (based on a suggestion from Francois-Xavier Kowalski).
- Fixed a problem with @plugin in keymacros.conf in case the named plugin is not
loaded (reported by Franz Gangkofer).
- Fixed a crash after executing the SVDRP command CLRE, caused by dangling 'schedule'
pointers from cChannel objects (reported by Malte Schröder).

7
epg.c
View File

@ -7,7 +7,7 @@
* Original version (as used in VDR before 1.3.0) written by
* Robert Schneider <Robert.Schneider@web.de> and Rolf Hakenes <hakenes@hippomi.de>.
*
* $Id: epg.c 1.49 2006/01/15 13:58:30 kls Exp $
* $Id: epg.c 1.50 2006/01/20 13:42:38 kls Exp $
*/
#include "epg.h"
@ -935,7 +935,10 @@ bool cSchedules::ClearAll(void)
cSchedulesLock SchedulesLock(true, 1000);
cSchedules *s = (cSchedules *)Schedules(SchedulesLock);
if (s) {
s->Clear();
for (cTimer *Timer = Timers.First(); Timer; Timer = Timers.Next(Timer))
Timer->SetEvent(NULL);
for (cSchedule *Schedule = s->First(); Schedule; Schedule = s->Next(Schedule))
Schedule->Cleanup(INT_MAX);
return true;
}
return false;