eitd/sectionsd.cpp: fix invalid iterator compare from different sets

This commit is contained in:
[CST] Focus
2012-05-09 18:12:16 +04:00
parent 37a482d8e2
commit a79e374cab

View File

@@ -709,7 +709,7 @@ static const SIevent &findNextSIevent(const event_id_t uniqueKey, SItime &zeit)
if (eFirst != mySIeventsOrderUniqueKey.end()) if (eFirst != mySIeventsOrderUniqueKey.end())
{ {
SItimes::iterator nextnvodtimes = eFirst->second->times.end(); SItimes::iterator nextnvodtimes = eFirst->second->times.end();
SItimes::iterator nexttimes = eFirst->second->times.end(); //SItimes::iterator nexttimes = eFirst->second->times.end();
if (eFirst->second->times.size() > 1) if (eFirst->second->times.size() > 1)
{ {
@@ -725,14 +725,17 @@ static const SIevent &findNextSIevent(const event_id_t uniqueKey, SItime &zeit)
MySIeventsOrderFirstEndTimeServiceIDEventUniqueKey::iterator eNext; MySIeventsOrderFirstEndTimeServiceIDEventUniqueKey::iterator eNext;
//if ((nextnvodtimes != eFirst->second->times.begin()) && (nextnvodtimes != eFirst->second->times.end())) { SItimes::iterator nexttimes;
bool nextfound = false;
//Startzeit not first - we can't use the ordered list... //Startzeit not first - we can't use the ordered list...
for (MySIeventsOrderFirstEndTimeServiceIDEventUniqueKey::iterator e = mySIeventsOrderFirstEndTimeServiceIDEventUniqueKey.begin(); e != for (MySIeventsOrderFirstEndTimeServiceIDEventUniqueKey::iterator e = mySIeventsOrderFirstEndTimeServiceIDEventUniqueKey.begin(); e !=
mySIeventsOrderFirstEndTimeServiceIDEventUniqueKey.end(); ++e ) { mySIeventsOrderFirstEndTimeServiceIDEventUniqueKey.end(); ++e ) {
if ((*e)->get_channel_id() == eFirst->second->get_channel_id()) { if ((*e)->get_channel_id() == eFirst->second->get_channel_id()) {
for (SItimes::iterator t = (*e)->times.begin(); t != (*e)->times.end(); ++t) { for (SItimes::iterator t = (*e)->times.begin(); t != (*e)->times.end(); ++t) {
if (t->startzeit > zeit.startzeit) { if (t->startzeit > zeit.startzeit) {
if (nexttimes != eFirst->second->times.end()) { //if (nexttimes != eFirst->second->times.end())
if(nextfound)
{
if (t->startzeit < nexttimes->startzeit) { if (t->startzeit < nexttimes->startzeit) {
eNext = e; eNext = e;
nexttimes = t; nexttimes = t;
@@ -741,27 +744,18 @@ static const SIevent &findNextSIevent(const event_id_t uniqueKey, SItime &zeit)
else { else {
eNext = e; eNext = e;
nexttimes = t; nexttimes = t;
nextfound = true;
} }
} }
} }
} }
} }
/* } else {
//find next normal
eNext = mySIeventsOrderServiceUniqueKeyFirstStartTimeEventUniqueKey.find(eFirst->second);
eNext++;
if (eNext != mySIeventsOrderServiceUniqueKeyFirstStartTimeEventUniqueKey.end())
{
if ((*eNext)->get_channel_id() == eFirst->second->get_channel_id())
nexttimes = (*eNext)->times.begin();
}
}
*/
if (nextnvodtimes != eFirst->second->times.end()) if (nextnvodtimes != eFirst->second->times.end())
++nextnvodtimes; ++nextnvodtimes;
//Compare //Compare
if (nexttimes != eFirst->second->times.end()) { //if (nexttimes != eFirst->second->times.end())
if(nextfound)
{
if (nextnvodtimes != eFirst->second->times.end()) { if (nextnvodtimes != eFirst->second->times.end()) {
//both times are set - take the first //both times are set - take the first
if (nexttimes->startzeit < nextnvodtimes->startzeit) { if (nexttimes->startzeit < nextnvodtimes->startzeit) {