summaryrefslogtreecommitdiff
path: root/tools.c
diff options
context:
space:
mode:
Diffstat (limited to 'tools.c')
-rw-r--r--tools.c19
1 files changed, 13 insertions, 6 deletions
diff --git a/tools.c b/tools.c
index 0494166..843a29c 100644
--- a/tools.c
+++ b/tools.c
@@ -469,13 +469,20 @@ void cAddEventThread::Action(void)
cSchedules *schedules = (cSchedules *)cSchedules::Schedules(SchedulesLock);
Lock();
while (schedules && (e = list->First()) != NULL) {
- cSchedule *schedule = (cSchedule *)schedules->GetSchedule(Channels.GetByChannelID(e->GetChannelID()), true);
- if (schedule) {
- schedule->AddEvent(e->GetEvent());
- EpgHandlers.SortSchedule(schedule);
- EpgHandlers.DropOutdated(schedule, e->GetEvent()->StartTime(), e->GetEvent()->EndTime(), e->GetEvent()->TableID(), e->GetEvent()->Version());
- list->Del(e);
+ tChannelID chanid = e->GetChannelID();
+ cChannel *chan = Channels.GetByChannelID(chanid);
+ if (!chan) {
+ error("Destination channel %s not found for cloning!", *chanid.ToString());
}
+ else {
+ cSchedule *schedule = (cSchedule *)schedules->GetSchedule(chan, true);
+ if (schedule) {
+ schedule->AddEvent(e->GetEvent());
+ EpgHandlers.SortSchedule(schedule);
+ EpgHandlers.DropOutdated(schedule, e->GetEvent()->StartTime(), e->GetEvent()->EndTime(), e->GetEvent()->TableID(), e->GetEvent()->Version());
+ }
+ }
+ list->Del(e);
}
Unlock();
cCondWait::SleepMs(10);