summaryrefslogtreecommitdiffstats
path: root/usr.bin/cut
diff options
context:
space:
mode:
Diffstat (limited to 'usr.bin/cut')
-rw-r--r--usr.bin/cut/cut.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/usr.bin/cut/cut.c b/usr.bin/cut/cut.c
index 2e334f6..a370e60 100644
--- a/usr.bin/cut/cut.c
+++ b/usr.bin/cut/cut.c
@@ -371,10 +371,11 @@ f_cut(FILE *fp, const char *fname)
wchar_t sep;
int output;
char *lbuf, *mlbuf;
- size_t clen, lbuflen;
+ size_t clen, lbuflen, reallen;
mlbuf = NULL;
for (sep = dchar; (lbuf = fgetln(fp, &lbuflen)) != NULL;) {
+ reallen = lbuflen;
/* Assert EOL has a newline. */
if (*(lbuf + lbuflen - 1) != '\n') {
/* Can't have > 1 line with no trailing newline. */
@@ -384,10 +385,11 @@ f_cut(FILE *fp, const char *fname)
memcpy(mlbuf, lbuf, lbuflen);
*(mlbuf + lbuflen) = '\n';
lbuf = mlbuf;
+ reallen++;
}
output = 0;
for (isdelim = 0, p = lbuf;; p += clen) {
- clen = mbrtowc(&ch, p, lbuf + lbuflen - p, NULL);
+ clen = mbrtowc(&ch, p, lbuf + reallen - p, NULL);
if (clen == (size_t)-1 || clen == (size_t)-2) {
warnc(EILSEQ, "%s", fname);
free(mlbuf);
@@ -413,7 +415,7 @@ f_cut(FILE *fp, const char *fname)
for (i = 0; dcharmb[i] != '\0'; i++)
putchar(dcharmb[i]);
for (;;) {
- clen = mbrtowc(&ch, p, lbuf + lbuflen - p,
+ clen = mbrtowc(&ch, p, lbuf + reallen - p,
NULL);
if (clen == (size_t)-1 || clen == (size_t)-2) {
warnc(EILSEQ, "%s", fname);
OpenPOWER on IntegriCloud