sectionsd: use better event set for removeDupEvents()

Use the set of events which is sorted by start time and
service id intead of the one sorted by end time to iterate
through the list of events. Fixes a mysterious crash on ppc.

git-svn-id: file:///home/bas/coolstream_public_svn/THIRDPARTY/applications/neutrino-experimental@1385 e54a6e83-5905-42d5-8d5c-058d10e6a962
This commit is contained in:
seife
2011-04-10 22:21:42 +00:00
parent 13b67c5da5
commit 8f704427b8

View File

@@ -1211,16 +1211,16 @@ static void removeOldEvents(const long seconds)
*/
static void removeDupEvents(void)
{
MySIeventsOrderFirstEndTimeServiceIDEventUniqueKey::iterator e1, e2, del;
MySIeventsOrderServiceUniqueKeyFirstStartTimeEventUniqueKey::iterator e1, e2, del;
readLockEvents();
e1 = mySIeventsOrderFirstEndTimeServiceIDEventUniqueKey.begin();
e1 = mySIeventsOrderServiceUniqueKeyFirstStartTimeEventUniqueKey.begin();
while ((e1 != mySIeventsOrderFirstEndTimeServiceIDEventUniqueKey.end()) && !messaging_zap_detected)
while ((e1 != mySIeventsOrderServiceUniqueKeyFirstStartTimeEventUniqueKey.end()) && !messaging_zap_detected)
{
e2 = e1;
e1++;
if (e1 == mySIeventsOrderFirstEndTimeServiceIDEventUniqueKey.end())
if (e1 == mySIeventsOrderServiceUniqueKeyFirstStartTimeEventUniqueKey.end())
break;
/* check for the same service */
@@ -1238,14 +1238,14 @@ static void removeDupEvents(void)
continue;
}
del = mySIeventsOrderFirstEndTimeServiceIDEventUniqueKey.end();
del = mySIeventsOrderServiceUniqueKeyFirstStartTimeEventUniqueKey.end();
if ((*e1)->table_id > (*e2)->table_id)
del = e1;
if ((*e1)->table_id < (*e2)->table_id)
del = e2;
/* can not happen. This check is pure paranoia :) */
if (del == mySIeventsOrderFirstEndTimeServiceIDEventUniqueKey.end())
if (del == mySIeventsOrderServiceUniqueKeyFirstStartTimeEventUniqueKey.end())
continue;
xprintf("%s: removing event %llx.%02x '%s'\n", __func__,