From fde29c04adbab9d5b081bf6717b5458188647f1c Mon Sep 17 00:00:00 2001 From: Casey Connolly Date: Wed, 23 Apr 2025 15:06:48 +0200 Subject: stdio: skip empty iovec when buffering is disabled When buffering on a FILE is disabled we still send both iovecs, even though the first one is always empty. Clean things up by skipping the empty iovec instead. --- src/stdio/__stdio_write.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/stdio/__stdio_write.c b/src/stdio/__stdio_write.c index d2d89475..5356553d 100644 --- a/src/stdio/__stdio_write.c +++ b/src/stdio/__stdio_write.c @@ -11,6 +11,11 @@ size_t __stdio_write(FILE *f, const unsigned char *buf, size_t len) size_t rem = iov[0].iov_len + iov[1].iov_len; int iovcnt = 2; ssize_t cnt; + + if (!iov->iov_len) { + iov++; + iovcnt--; + } for (;;) { cnt = syscall(SYS_writev, f->fd, iov, iovcnt); if (cnt == rem) { -- cgit v1.2.1