Simplify removal of messages from RunContext

Instead of doing range-based removals, we only erase specific message,
because there can never be more than 1 message with the specific ID.
This commit is contained in:
Martin Hořeňovský
2025-07-21 19:25:48 +02:00
parent 10aef62f21
commit 9c5c21df82

View File

@@ -437,13 +437,17 @@ namespace Catch {
} }
void RunContext::popScopedMessage( MessageInfo const& message ) { void RunContext::popScopedMessage( MessageInfo const& message ) {
// Note: On average, it would probably be better to look for the message
// backwards. However, we do not expect to have to deal with more
// messages than low single digits, so the optimization is tiny,
// and we would have to hand-write the loop to avoid terrible
// codegen of reverse iterators in debug mode.
m_messages.erase( m_messages.erase(
std::remove_if( m_messages.begin(), std::find_if( m_messages.begin(),
m_messages.end(), m_messages.end(),
[id = message.sequence]( MessageInfo const& msg ) { [id = message.sequence]( MessageInfo const& msg ) {
return msg.sequence == id; return msg.sequence == id;
} ), } ) );
m_messages.end() );
} }
void RunContext::emplaceUnscopedMessage( MessageBuilder&& builder ) { void RunContext::emplaceUnscopedMessage( MessageBuilder&& builder ) {