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
commit fa096b26d1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

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;
} }
} }