Fix fake event queue process event.

The result of remove_if was fed into erase without checking something
was actually removed.
pull/14254/head
Vincent Coubard 2021-02-09 17:45:24 +00:00
parent 0feaae6d18
commit a3a507d9ca
1 changed files with 14 additions and 13 deletions

View File

@ -98,21 +98,22 @@ void EventQueue::process_events() {
}
/* dispatch all handlers that happen at this time */
_handlers.erase(
std::remove_if(
_handlers.begin(),
_handlers.end(),
[earliest_tick](internal_event& element) -> bool {
if (earliest_tick >= element.tick) {
(*(element.handler))();
return true;
} else {
return false;
}
auto found = std::remove_if(
_handlers.begin(),
_handlers.end(),
[earliest_tick](internal_event& element) -> bool {
if (earliest_tick >= element.tick) {
(*(element.handler))();
return true;
} else {
return false;
}
),
_handlers.end()
}
);
if (found != _handlers.end()) {
_handlers.erase(found, _handlers.end());
}
}
}