diff options
author | Dimitar Petrovski <dimeptr@gmail.com> | 2012-06-04 00:15:36 +0200 |
---|---|---|
committer | Dimitar Petrovski <dimeptr@gmail.com> | 2012-06-04 00:15:36 +0200 |
commit | 7335a91779b6bef557cef1a4697f27b85a0627c0 (patch) | |
tree | 3b2b6c7b89ea1b3252659ee0c9808ff8d9517ccf | |
parent | 5e7d26da37cee78f6cb943ba10bae6455ee1e73b (diff) | |
download | vdr-plugin-eepg-7335a91779b6bef557cef1a4697f27b85a0627c0.tar.gz vdr-plugin-eepg-7335a91779b6bef557cef1a4697f27b85a0627c0.tar.bz2 |
remove empty list from map
-rw-r--r-- | equivhandler.c | 4 | ||||
-rw-r--r-- | util.c | 31 |
2 files changed, 18 insertions, 17 deletions
diff --git a/equivhandler.c b/equivhandler.c index 2c1b424..a742150 100644 --- a/equivhandler.c +++ b/equivhandler.c @@ -166,11 +166,11 @@ void cEquivHandler::updateEquivalent(tChannelID channelID, cEvent *pEvent){ multimap<string,string>::iterator it; pair<multimap<string,string>::iterator,multimap<string,string>::iterator> ret; - LogD(2, prep("Start updateEquivalent %s"), *channelID.ToString()); + LogD(3, prep("Start updateEquivalent %s"), *channelID.ToString()); ret = equiChanMap.equal_range(*channelID.ToString()); for (it=ret.first; it!=ret.second; ++it) { - LogD(2, prep("equivalent channel exists")); + LogD(3, prep("equivalent channel exists")); tChannelID equChannelID (tChannelID::FromString((*it).second.c_str())); cEvent* newEvent = new cEvent (pEvent->EventID()); cloneEvent(pEvent, newEvent); @@ -198,22 +198,23 @@ void cAddEventThread::Action(void) // list->Del(e); // } std::map<tChannelID,cList<cEvent *>*,tChannelIDCompare>::iterator it; - if (schedules) { - for ( it=map_list->begin() ; it != map_list->end(); it++ ) { - cSchedule *schedule = (cSchedule *)schedules->GetSchedule(Channels.GetByChannelID((*it).first), true); - while (schedules && ((*it).second->First()) != NULL) { - cEvent* event = *(*it).second->First(); - - cEvent *pEqvEvent = (cEvent *) schedule->GetEvent (event->EventID(), event->StartTime()); - if (pEqvEvent) - schedule->DelEvent(pEqvEvent); - - schedule->AddEvent(event); - (*it).second->Del(event); - } - EpgHandlers.SortSchedule(schedule); - + it=map_list->begin(); + while (schedules && it != map_list->end()) { + cSchedule *schedule = (cSchedule *)schedules->GetSchedule(Channels.GetByChannelID((*it).first), true); + while (((*it).second->First()) != NULL) { + cEvent* event = *(*it).second->First(); + + cEvent *pEqvEvent = (cEvent *) schedule->GetEvent (event->EventID(), event->StartTime()); + if (pEqvEvent) + schedule->DelEvent(pEqvEvent); + + schedule->AddEvent(event); + (*it).second->Del(event); } + EpgHandlers.SortSchedule(schedule); + delete (*it).second; + map_list->erase(it++); + } Unlock(); cCondWait::SleepMs(10); |