From: David Haller Subject: [PATCH adjusted] avoid erase of iterator inside of a loop see commit 49ba796fe6298abf0ebba68a25ddfc92d3d70aad at diff -ub -purN -x '*~' a/conflictcheck.c b/conflictcheck.c --- a/conflictcheck.c 2017-05-01 21:40:19.000000000 +0200 +++ b/conflictcheck.c 2019-06-12 16:42:37.187803757 +0200 @@ -498,8 +498,8 @@ int cConflictCheck::ProcessCheckTime(cCo { if ((*it) && (*it)->stop > checkTime->evaltime) checkTime->startingTimers.insert(*it); - pendingTimers.erase(*it); } + pendingTimers.clear(); LogFile.Log(3,"attach starting timers"); // handle starting timers @@ -518,9 +518,9 @@ int cConflictCheck::ProcessCheckTime(cCo { LogFile.Log(3,"stopping timer '%s' (%s, channel %s) at %s on device %d because of higher priority", (*it2)->timer->File(), DAYDATETIME((*it2)->start), CHANNELNAME((*it2)->timer->Channel()), DAYDATETIME(checkTime->evaltime), device+1); AddConflict((*it2), checkTime, pendingTimers); - devices[device].recTimers.erase(*it2); Conflicts++; } + devices[device].recTimers.clear(); } devices[device].recTimers.insert(*it); (*it)->device = device;