Fix a regression in handling digit separators (#1782)

This commit is contained in:
Victor Zverovich 2020-07-18 08:31:38 -07:00
parent eb90da2e82
commit b17d5c4f5d
2 changed files with 2 additions and 1 deletions

View File

@ -1546,7 +1546,7 @@ template <typename OutputIt, typename Char, typename UInt> struct int_writer {
int num_digits = count_digits(abs_value);
int size = num_digits, n = num_digits;
std::string::const_iterator group = groups.cbegin();
while (group != groups.cend() && num_digits > *group && *group > 0 &&
while (group != groups.cend() && n > *group && *group > 0 &&
*group != max_value<char>()) {
size += sep_size;
n -= *group;

View File

@ -61,6 +61,7 @@ TEST(LocaleTest, Format) {
std::locale special_grouping_loc(std::locale(), new special_grouping<char>());
EXPECT_EQ("1,23,45,678", fmt::format(special_grouping_loc, "{:L}", 12345678));
EXPECT_EQ("12,345", fmt::format(special_grouping_loc, "{:L}", 12345));
std::locale small_grouping_loc(std::locale(), new small_grouping<char>());
EXPECT_EQ("4,2,9,4,9,6,7,2,9,5",