Module Name: src
Committed By: thorpej
Date: Sat Jun 6 15:45:47 UTC 2020
Modified Files:
src/sys/lib/libsa: subr_prf.c
Log Message:
Make libsa's vsnprintf() work as expected when passed a NULL
destinatino buffer.
To generate a diff of this commit:
cvs rdiff -u -r1.28 -r1.29 src/sys/lib/libsa/subr_prf.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/sys/lib/libsa/subr_prf.c
diff -u src/sys/lib/libsa/subr_prf.c:1.28 src/sys/lib/libsa/subr_prf.c:1.29
--- src/sys/lib/libsa/subr_prf.c:1.28 Sun Feb 3 11:59:43 2019
+++ src/sys/lib/libsa/subr_prf.c Sat Jun 6 15:45:47 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: subr_prf.c,v 1.28 2019/02/03 11:59:43 mrg Exp $ */
+/* $NetBSD: subr_prf.c,v 1.29 2020/06/06 15:45:47 thorpej Exp $ */
/*-
* Copyright (c) 1993
@@ -127,6 +127,12 @@ do { \
#endif /* LIBSA_PRINTF_LONGLONG_SUPPORT */
static void
+null_sputchar(int c)
+{
+ sbuf++;
+}
+
+static void
sputchar(int c)
{
@@ -147,8 +153,9 @@ vsnprintf(char *buf, size_t size, const
sbuf = buf;
ebuf = buf + size - 1;
- kdoprnt(sputchar, fmt, ap);
- *sbuf = '\0';
+ kdoprnt(buf == NULL ? null_sputchar : sputchar, fmt, ap);
+ if (buf != NULL)
+ *sbuf = '\0';
return sbuf - buf;
}