diff options
-rw-r--r-- | CONTRIBUTORS | 3 | ||||
-rw-r--r-- | HISTORY | 2 | ||||
-rw-r--r-- | epg.c | 7 |
3 files changed, 10 insertions, 2 deletions
diff --git a/CONTRIBUTORS b/CONTRIBUTORS index 2d4eb0d8..fe0481ae 100644 --- a/CONTRIBUTORS +++ b/CONTRIBUTORS @@ -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 @@ -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,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; |