From 6af59d0d232e33b2be61a6dc96e7918993dd28d5 Mon Sep 17 00:00:00 2001
From: Manuel Novoa III <mjn3@codepoet.org>
Date: Tue, 11 Jun 2002 21:19:41 +0000
Subject: Revert Erik's patch to vasprintf and fix the real issue. The writer
 for the stream returned by open_memstream was supposed to keep the buffer
 nul-terminated.  I apparently left out a statement.

---
 libc/stdio/printf.c | 1 -
 libc/stdio/stdio.c  | 1 +
 2 files changed, 1 insertion(+), 1 deletion(-)

(limited to 'libc')

diff --git a/libc/stdio/printf.c b/libc/stdio/printf.c
index e311a4f87..92b5b5956 100644
--- a/libc/stdio/printf.c
+++ b/libc/stdio/printf.c
@@ -1451,7 +1451,6 @@ int vasprintf(char **__restrict buf, const char * __restrict format,
 		return -1;
 	}
 	rv = vfprintf(f, format, arg);
-	if (rv >= 0) fputc('\0', f);
 	fclose(f);
 	if (rv < 0) {
 		free(*buf);
diff --git a/libc/stdio/stdio.c b/libc/stdio/stdio.c
index 60d4fe73b..1462874f0 100644
--- a/libc/stdio/stdio.c
+++ b/libc/stdio/stdio.c
@@ -643,6 +643,7 @@ static ssize_t oms_write(void *cookie, const char *buf, size_t bufsize)
 
 	if (COOKIE->pos > COOKIE->eof) {
 		*COOKIE->sizeloc = COOKIE->eof = COOKIE->pos;
+		COOKIE->buf[COOKIE->eof] = 0; /* Need to nul-terminate. */
 	}
 
 	return bufsize;
-- 
cgit v1.2.3