Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b921c69f authored by Anton Arapov's avatar Anton Arapov Committed by Linus Torvalds
Browse files

lib/vsprintf.c: fix vscnprintf() if @size is == 0



vscnprintf() should return 0 if @size is == 0.  Update the comment for it,
as @size is unsigned.

This change based on the code of commit
b903c0b8 ("lib: fix scnprintf() if @size
is == 0") moves the real fix into vscnprinf() from scnprintf() and makes
scnprintf() call vscnprintf(), thus avoid code duplication.

Signed-off-by: default avatarAnton Arapov <aarapov@redhat.com>
Acked-by: default avatarChangli Gao <xiaosuo@gmail.com>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent a3f938bf
Loading
Loading
Loading
Loading
+8 −8
Original line number Diff line number Diff line
@@ -1473,7 +1473,7 @@ EXPORT_SYMBOL(vsnprintf);
 * @args: Arguments for the format string
 *
 * The return value is the number of characters which have been written into
 * the @buf not including the trailing '\0'. If @size is <= 0 the function
 * the @buf not including the trailing '\0'. If @size is == 0 the function
 * returns 0.
 *
 * Call this function if you are already dealing with a va_list.
@@ -1487,7 +1487,11 @@ int vscnprintf(char *buf, size_t size, const char *fmt, va_list args)

	i = vsnprintf(buf, size, fmt, args);

	return (i >= size) ? (size - 1) : i;
	if (likely(i < size))
		return i;
	if (size != 0)
		return size - 1;
	return 0;
}
EXPORT_SYMBOL(vscnprintf);

@@ -1535,14 +1539,10 @@ int scnprintf(char *buf, size_t size, const char *fmt, ...)
	int i;

	va_start(args, fmt);
	i = vsnprintf(buf, size, fmt, args);
	i = vscnprintf(buf, size, fmt, args);
	va_end(args);

	if (likely(i < size))
	return i;
	if (size != 0)
		return size - 1;
	return 0;
}
EXPORT_SYMBOL(scnprintf);