Remove conversion compiler warnings (#844)

* Remove conversion compiler warning

When compiling with g++8, I get the following two errors:
include/fmt/format-inl.h:400:29: error: conversion from ‘int’ to ‘char’ may change value [-Werror=conversion]
       buffer[size++] = zero + static_cast<char>(digit);
                        ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~
include/fmt/format-inl.h:416:28: error: conversion from ‘int’ to ‘char’ may change value [-Werror=conversion]
       buffer[size++] = '0' + digit;
                        ~~~~^~~~~~~

With this change, the errors are gone.
This commit is contained in:
medithe
2018-08-29 15:38:56 +02:00
committed by Victor Zverovich
parent e483a01a0f
commit 95a718992c

View File

@ -374,7 +374,7 @@ FMT_FUNC char *write_exponent(char *buffer, int exp) {
*buffer++ = '+'; *buffer++ = '+';
} }
if (exp >= 100) { if (exp >= 100) {
*buffer++ = '0' + static_cast<char>(exp / 100); *buffer++ = static_cast<char>('0' + exp / 100);
exp %= 100; exp %= 100;
const char *d = data::DIGITS + exp * 2; const char *d = data::DIGITS + exp * 2;
*buffer++ = d[0]; *buffer++ = d[0];
@ -384,7 +384,7 @@ FMT_FUNC char *write_exponent(char *buffer, int exp) {
*buffer++ = d[0]; *buffer++ = d[0];
*buffer++ = d[1]; *buffer++ = d[1];
} else { } else {
*buffer++ = '0' + static_cast<char>(exp); *buffer++ = static_cast<char>('0' + exp);
} }
return buffer; return buffer;
} }
@ -421,7 +421,7 @@ FMT_FUNC void grisu2_gen_digits(
FMT_ASSERT(false, "invalid number of digits"); FMT_ASSERT(false, "invalid number of digits");
} }
if (digit != 0 || size != 0) if (digit != 0 || size != 0)
buffer[size++] = '0' + static_cast<char>(digit); buffer[size++] = static_cast<char>('0' + digit);
--exp; --exp;
uint64_t remainder = (static_cast<uint64_t>(hi) << -one.e) + lo; uint64_t remainder = (static_cast<uint64_t>(hi) << -one.e) + lo;
if (remainder <= delta) { if (remainder <= delta) {
@ -436,7 +436,7 @@ FMT_FUNC void grisu2_gen_digits(
delta *= 10; delta *= 10;
char digit = static_cast<char>(lo >> -one.e); char digit = static_cast<char>(lo >> -one.e);
if (digit != 0 || size != 0) if (digit != 0 || size != 0)
buffer[size++] = '0' + digit; buffer[size++] = static_cast<char>('0' + digit);
lo &= one.f - 1; lo &= one.f - 1;
--exp; --exp;
if (lo < delta) { if (lo < delta) {
@ -529,7 +529,7 @@ FMT_FUNC void grisu2_format(double value, char *buffer, size_t &size, char type,
size_t unsigned_precision = precision >= 0 ? precision : 6; size_t unsigned_precision = precision >= 0 ? precision : 6;
if (size > unsigned_precision) { if (size > unsigned_precision) {
// TODO: round instead of truncating // TODO: round instead of truncating
dec_exp += size - unsigned_precision; dec_exp += static_cast<int>(size - unsigned_precision);
size = unsigned_precision; size = unsigned_precision;
} }
grisu2_prettify(buffer, size, dec_exp, type, unsigned_precision, grisu2_prettify(buffer, size, dec_exp, type, unsigned_precision,