lib: fix scnprintf() if @size is == 0
Subsystems (2)
PATCH v2 1/1 lib: fix scnprintf() if @size is == 0
scnprintf() should return 0 if @size is == 0. Update the comment for it, as @size is unsigned.
Signed-off-by Changli Gao <[email protected]>
---
v2: use if to improve readability and add likely()
1 file changed, 6 insertions(+), 2 deletions(-)
lib/vsprintf.c +6 -2
@@ -1497,7 +1497,7 @@ EXPORT_SYMBOL(snprintf);* @...: Arguments for the format string * * The return value is the number of characters written into @buf not including -* the trailing '\0'. If @size is <= 0 the function returns 0. +* the trailing '\0'. If @size is == 0 the function returns 0. */ int scnprintf (char *buf,size_t size,const char *fmt, ...)
@@ -1509,7 +1509,11 @@ int scnprintf(char *buf, size_t size, const char *fmt, ...) i =vsnprintf (buf, size, fmt, args);va_end (args); -return (i >= size) ? (size -1 ) : i; +if (likely (i < size)) +return i; +if (size !=0 ) +return size -1 ; +return 0 ; }EXPORT_SYMBOL (scnprintf);