mirror of
https://github.com/u-boot/u-boot.git
synced 2025-04-29 09:45:52 +00:00
tiny-printf: Correct return values
The sprintf() etc. functions are supposed to return the length of the string written, but do not. Fix this by checking the amount of buffer space used. Signed-off-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
parent
eb08abc293
commit
e2d96ac9ee
1 changed files with 6 additions and 9 deletions
|
@ -365,16 +365,15 @@ int sprintf(char *buf, const char *fmt, ...)
|
|||
{
|
||||
struct printf_info info;
|
||||
va_list va;
|
||||
int ret;
|
||||
|
||||
va_start(va, fmt);
|
||||
info.outstr = buf;
|
||||
info.putc = putc_outstr;
|
||||
ret = _vprintf(&info, fmt, va);
|
||||
_vprintf(&info, fmt, va);
|
||||
va_end(va);
|
||||
*info.outstr = '\0';
|
||||
|
||||
return ret;
|
||||
return info.outstr - buf;
|
||||
}
|
||||
|
||||
#if CONFIG_IS_ENABLED(LOG)
|
||||
|
@ -382,14 +381,13 @@ int sprintf(char *buf, const char *fmt, ...)
|
|||
int vsnprintf(char *buf, size_t size, const char *fmt, va_list va)
|
||||
{
|
||||
struct printf_info info;
|
||||
int ret;
|
||||
|
||||
info.outstr = buf;
|
||||
info.putc = putc_outstr;
|
||||
ret = _vprintf(&info, fmt, va);
|
||||
_vprintf(&info, fmt, va);
|
||||
*info.outstr = '\0';
|
||||
|
||||
return ret;
|
||||
return info.outstr - buf;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
@ -398,16 +396,15 @@ int snprintf(char *buf, size_t size, const char *fmt, ...)
|
|||
{
|
||||
struct printf_info info;
|
||||
va_list va;
|
||||
int ret;
|
||||
|
||||
va_start(va, fmt);
|
||||
info.outstr = buf;
|
||||
info.putc = putc_outstr;
|
||||
ret = _vprintf(&info, fmt, va);
|
||||
_vprintf(&info, fmt, va);
|
||||
va_end(va);
|
||||
*info.outstr = '\0';
|
||||
|
||||
return ret;
|
||||
return info.outstr - buf;
|
||||
}
|
||||
|
||||
void print_grouped_ull(unsigned long long int_val, int digits)
|
||||
|
|
Loading…
Add table
Reference in a new issue