diff options
author | tjr <tjr@FreeBSD.org> | 2002-08-11 09:53:44 +0000 |
---|---|---|
committer | tjr <tjr@FreeBSD.org> | 2002-08-11 09:53:44 +0000 |
commit | 9e94669b318caf0f97ff31f3c8fe7deb5dfd3c1b (patch) | |
tree | 5948724bec9b79865cb013b3c6f660f1ccdc8a75 | |
parent | 2354dfe3ac819f30e3d99097529a565c78b31019 (diff) | |
download | FreeBSD-src-9e94669b318caf0f97ff31f3c8fe7deb5dfd3c1b.zip FreeBSD-src-9e94669b318caf0f97ff31f3c8fe7deb5dfd3c1b.tar.gz |
Correct boundary condition error in `D' and `P' commands when the last
line of the pattern space is empty. Don't emit spurious newline when
EOF is reached with the `N' command.
Pointed out by: Oleg Osyka
MFC after: 1 week
-rw-r--r-- | usr.bin/sed/process.c | 9 |
1 files changed, 3 insertions, 6 deletions
diff --git a/usr.bin/sed/process.c b/usr.bin/sed/process.c index e7abf71..94c24e9 100644 --- a/usr.bin/sed/process.c +++ b/usr.bin/sed/process.c @@ -137,7 +137,7 @@ redirect: if (pd) goto new; if (psl == 0 || - (p = memchr(ps, '\n', psl - 1)) == NULL) { + (p = memchr(ps, '\n', psl)) == NULL) { pd = 1; goto new; } else { @@ -176,11 +176,8 @@ redirect: case 'N': flush_appends(); cspace(&PS, "\n", 1, 0); - if (!mf_fgets(&PS, 0)) { - if (!nflag && !pd) - OUT(ps) + if (!mf_fgets(&PS, 0)) exit(0); - } break; case 'p': if (pd) @@ -191,7 +188,7 @@ redirect: if (pd) break; if (psl != 0 && - (p = memchr(ps, '\n', psl - 1)) != NULL) { + (p = memchr(ps, '\n', psl)) != NULL) { oldpsl = psl; psl = p - ps; } |