Merge pull request #1715 from sfranzen/fix-compact-reporter

Fix infinite loop in compact reporter printer
This commit is contained in:
Martin Hořeňovský
2019-08-07 09:12:38 +02:00
committed by GitHub

View File

@ -209,24 +209,25 @@ private:
if (itMessage == messages.end()) if (itMessage == messages.end())
return; return;
// using messages.end() directly yields (or auto) compilation error: const auto itEnd = messages.cend();
std::vector<MessageInfo>::const_iterator itEnd = messages.end(); const auto N = static_cast<std::size_t>(std::distance(itMessage, itEnd));
const std::size_t N = static_cast<std::size_t>(std::distance(itMessage, itEnd));
{ {
Colour colourGuard(colour); Colour colourGuard(colour);
stream << " with " << pluralise(N, "message") << ':'; stream << " with " << pluralise(N, "message") << ':';
} }
for (; itMessage != itEnd; ) { while (itMessage != itEnd) {
// If this assertion is a warning ignore any INFO messages // If this assertion is a warning ignore any INFO messages
if (printInfoMessages || itMessage->type != ResultWas::Info) { if (printInfoMessages || itMessage->type != ResultWas::Info) {
stream << " '" << itMessage->message << '\''; printMessage();
if (++itMessage != itEnd) { if (itMessage != itEnd) {
Colour colourGuard(dimColour()); Colour colourGuard(dimColour());
stream << " and"; stream << " and";
} }
continue;
} }
++itMessage;
} }
} }