eitd/sectionsd.cpp void addEven: crash fix, do not use iterator without locking

This commit is contained in:
Jacek Jendrzej
2014-04-09 16:57:56 +02:00
parent c170b03b9a
commit f1028f0d16

View File

@@ -453,7 +453,7 @@ xprintf("addEvent: ch %012" PRIx64 " running %d (%s) got_CN %d\n", evt.get_chann
}
deleteEvent(e->uniqueKey());
readLockEvents();
if ( !mySIeventsOrderUniqueKey.empty() && mySIeventsOrderUniqueKey.size() >= max_events && max_events != 0 ) {
if ( !mySIeventsOrderFirstEndTimeServiceIDEventUniqueKey.empty() && mySIeventsOrderUniqueKey.size() >= max_events && max_events != 0 ) {
MySIeventsOrderFirstEndTimeServiceIDEventUniqueKey::iterator lastEvent =
mySIeventsOrderFirstEndTimeServiceIDEventUniqueKey.begin();
@@ -464,7 +464,7 @@ xprintf("addEvent: ch %012" PRIx64 " running %d (%s) got_CN %d\n", evt.get_chann
#else
time_t now = time(NULL);
bool back = false;
if (*lastEvent!=NULL && (*lastEvent)->times.size() == 1)
if ((*lastEvent)->times.size() == 1)
{
if ((*lastEvent)->times.begin()->startzeit + (long)(*lastEvent)->times.begin()->dauer >= now - oldEventsAre)
back = true;
@@ -485,10 +485,10 @@ xprintf("addEvent: ch %012" PRIx64 " running %d (%s) got_CN %d\n", evt.get_chann
}
unlockMessaging();
}
event_id_t uniqueKey = (*lastEvent)->uniqueKey();
// else fprintf(stderr, ">");
unlockEvents();
if(*lastEvent!=NULL)
deleteEvent((*lastEvent)->uniqueKey());
deleteEvent(uniqueKey);
}
else
unlockEvents();