Module Name:    src
Committed By:   rillig
Date:           Fri Feb 16 21:25:46 UTC 2024

Modified Files:
        src/common/lib/libutil: snprintb.c

Log Message:
snprintb: do not modify bufsize when producing multiple lines


To generate a diff of this commit:
cvs rdiff -u -r1.33 -r1.34 src/common/lib/libutil/snprintb.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/common/lib/libutil/snprintb.c
diff -u src/common/lib/libutil/snprintb.c:1.33 src/common/lib/libutil/snprintb.c:1.34
--- src/common/lib/libutil/snprintb.c:1.33	Fri Feb 16 19:53:40 2024
+++ src/common/lib/libutil/snprintb.c	Fri Feb 16 21:25:46 2024
@@ -1,4 +1,4 @@
-/*	$NetBSD: snprintb.c,v 1.33 2024/02/16 19:53:40 rillig Exp $	*/
+/*	$NetBSD: snprintb.c,v 1.34 2024/02/16 21:25:46 rillig Exp $	*/
 
 /*-
  * Copyright (c) 2002 The NetBSD Foundation, Inc.
@@ -41,7 +41,7 @@
 
 #  include <sys/cdefs.h>
 #  if defined(LIBC_SCCS) && !defined(lint)
-__RCSID("$NetBSD: snprintb.c,v 1.33 2024/02/16 19:53:40 rillig Exp $");
+__RCSID("$NetBSD: snprintb.c,v 1.34 2024/02/16 21:25:46 rillig Exp $");
 #  endif
 
 #  include <sys/types.h>
@@ -51,7 +51,7 @@ __RCSID("$NetBSD: snprintb.c,v 1.33 2024
 #  include <errno.h>
 # else /* ! _KERNEL */
 #  include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: snprintb.c,v 1.33 2024/02/16 19:53:40 rillig Exp $");
+__KERNEL_RCSID(0, "$NetBSD: snprintb.c,v 1.34 2024/02/16 21:25:46 rillig Exp $");
 #  include <sys/param.h>
 #  include <sys/inttypes.h>
 #  include <sys/systm.h>
@@ -92,10 +92,6 @@ snprintb_m(char *buf, size_t bufsize, co
 		goto internal;
 	}
 
-	/* Reserve space for trailing blank line if needed */
-	if (line_max > 0)
-		bufsize--;
-
 	int val_len = snprintf(buf, bufsize, num_fmt, (uintmax_t)val);
 	if (val_len < 0)
 		goto internal;
@@ -268,13 +264,12 @@ snprintb_m(char *buf, size_t bufsize, co
 	if (sep != '<')
 		STORE('>');
 	if (line_max > 0) {
-		bufsize++;
 		STORE('\0');
-		if (total_len >= bufsize && bufsize > 1)
+		if (bufsize >= 2 && total_len > bufsize - 2)
 			buf[bufsize - 2] = '\0';
 	}
 	STORE('\0');
-	if (total_len >= bufsize && bufsize > 0)
+	if (bufsize >= 1 && total_len > bufsize - 1)
 		buf[bufsize - 1] = '\0';
 	return (int)(total_len - 1);
 internal:

Reply via email to