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