I got an exception and the program crashed, i don't really know how to reproduce it, it is not triggered by a special parameter. would you please help me to figure it out. @gelldur
{
std::lock_guard writeGuard{_mutexStreams};
if(!_eventStreams.empty())
{
// If anything was added then we need to add those elements
std::move(_eventStreams.begin(), _eventStreams.end(), std::back_inserter(eventStreams));
}
std::swap(eventStreams, _eventStreams); // move data TO member
// Check do we need remove something
if(_eventStreams.size() != _eventToStream.size())
{
auto removeFrom = std::remove_if(
_eventStreams.begin(), _eventStreams.end(), [this](const auto& eventStream) {
for(const auto& element : _eventToStream)
{
// Don't remove if we point to the same place (is it UB ?)
if(element.second == eventStream.get())
{
return false;
}
}
return true;
});
assert(removeFrom != _eventStreams.end());
_eventStreams.erase(removeFrom, _eventStreams.end());
}
}
I got an exception and the program crashed, i don't really know how to reproduce it, it is not triggered by a special parameter. would you please help me to figure it out. @gelldur
The error log:
/thirdparty/EventBus-3.0.4/lib/src/dexode/EventBus.cpp:57: std::size_t dexode::EventBus::processLimit(std::size_t): Assertion `removeFrom != _eventStreams.end()' failed.
The source code is here: