git: 5016d112ad8b - main - wc: Make the read buffer static.
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Thu, 16 Feb 2023 00:41:31 UTC
The branch main has been updated by des: URL: https://cgit.FreeBSD.org/src/commit/?id=5016d112ad8b259047920f3a2f749c369982de37 commit 5016d112ad8b259047920f3a2f749c369982de37 Author: Dag-Erling Smørgrav <des@FreeBSD.org> AuthorDate: 2023-02-16 00:40:30 +0000 Commit: Dag-Erling Smørgrav <des@FreeBSD.org> CommitDate: 2023-02-16 00:40:45 +0000 wc: Make the read buffer static. The read buffer in cnt() is 64 kB, which is a bit excessive for a stack variable. MAXBSIZE has grown since this code was originally written, and it might grow again in the future. Since the program is single-threaded and cnt() does not recurse, we can safely make the buffer static. While there, constify p since it is only used to read. Sponsored by: Klara, Inc. Reviewed by: emaste Differential Revision: https://reviews.freebsd.org/D38608 --- usr.bin/wc/wc.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/usr.bin/wc/wc.c b/usr.bin/wc/wc.c index 9c129917dd04..6ba827612e3d 100644 --- a/usr.bin/wc/wc.c +++ b/usr.bin/wc/wc.c @@ -214,9 +214,10 @@ show_cnt(const char *file, uintmax_t linect, uintmax_t wordct, static int cnt(const char *file) { - char buf[MAXBSIZE], *p; + static char buf[MAXBSIZE]; struct stat sb; mbstate_t mbs; + const char *p; uintmax_t linect, wordct, charct, llct, tmpll; ssize_t len; size_t clen; @@ -259,7 +260,7 @@ cnt(const char *file) * lines than to get words, since the word count requires locale * handling. */ - while ((len = read(fd, buf, sizeof(buf)))) { + while ((len = read(fd, buf, sizeof(buf))) != 0) { if (len < 0) { xo_warn("%s: read", file); (void)close(fd);