shithub: scc

Download patch

ref: 239fa3156f2766158945882883bf00ef8f342ea8
parent: 65014a8ce3a1b7d2b18c97bca389d17d83faff57
author: Roberto E. Vargas Caballero <k0ga@shike2.com>
date: Sat Sep 1 10:22:20 EDT 2018

[lib/c] Fix _flsbuf()

This function couldn't work if the buffer pointers were not
initialized.

--- a/lib/c/_flsbuf.c
+++ b/lib/c/_flsbuf.c
@@ -7,9 +7,11 @@
 _flsbuf(FILE *fp)
 {
 	int lnbuf = fp->flags & _IOLBF;
+	unsigned char *p;
 	size_t cnt;
 
-	cnt = ((lnbuf) ? fp->lp : fp->wp) - fp->buf;
+	p = (lnbuf) ? fp->lp : fp->wp;
+	cnt = p - fp->buf;
 
 	if (_write(fp->fd, fp->buf, cnt) != cnt) {
 		fp->flags |= _IOERR;
--- a/lib/c/stdio.c
+++ b/lib/c/stdio.c
@@ -9,13 +9,19 @@
 		.fd = 0,
 		.buf = inbuf,
 		.len = BUFSIZ,
-		.flags = _IOREAD
+		.flags = _IOREAD,
+		.lp = inbuf,
+		.rp = inbuf,
+		.wp = inbuf,
 	},
 	{
 		.fd = 1,
 		.buf = outbuf,
 		.len = BUFSIZ,
-		.flags = _IOWRITE | _IOLBF
+		.flags = _IOWRITE | _IOLBF,
+		.lp = outbuf,
+		.rp = outbuf,
+		.wp = outbuf,
 	},
 	{
 		.fd = 2,