diff --git a/os/various/chprintf.c b/os/various/chprintf.c index 190a7defa..0feee72c3 100644 --- a/os/various/chprintf.c +++ b/os/various/chprintf.c @@ -77,10 +77,10 @@ static char *ftoa(char *p, double num) { long l; unsigned long precision = FLOAT_PRECISION; - l = num; + l = (long)num; p = long_to_string_with_divisor(p, l, 10, 0); *p++ = '.'; - l = (num - l) * precision; + l = (long)((num - l) * precision); return long_to_string_with_divisor(p, l, 10, precision / 10); } #endif @@ -250,8 +250,8 @@ unsigned_common: chSequentialStreamPut(chp, (uint8_t)filler); while (++width != 0); } - while (--i >= 0) - chSequentialStreamPut(chp, (uint8_t)*s++); + chSequentialStreamWrite(chp, (uint8_t*)s, i); + s += i; while (width) { chSequentialStreamPut(chp, (uint8_t)filler); @@ -281,7 +281,7 @@ unsigned_common: * @param[in] str pointer to a buffer * @param[in] size maximum size of the buffer * @param[in] fmt formatting string - * @param[in] ap list of parameters + * @return The size of the generated string. * * @api */