From 76d72376e0244a5cafd4880cdc623e37d86a75e4 Mon Sep 17 00:00:00 2001 From: Denys Vlasenko Date: Thu, 1 Sep 2016 01:59:11 +0200 Subject: sed: fix "sed n (flushes pattern space, terminates early)" testcase failure Patch based on work by Dengke Du Signed-off-by: Denys Vlasenko --- editors/sed.c | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) (limited to 'editors/sed.c') diff --git a/editors/sed.c b/editors/sed.c index c0d79cc7b..b7add1fb1 100644 --- a/editors/sed.c +++ b/editors/sed.c @@ -1300,16 +1300,17 @@ static void process_files(void) case 'n': if (!G.be_quiet) sed_puts(pattern_space, last_gets_char); - if (next_line) { - free(pattern_space); - pattern_space = next_line; - last_gets_char = next_gets_char; - next_line = get_next_line(&next_gets_char, &last_puts_char); - substituted = 0; - linenum++; - break; + if (next_line == NULL) { + /* If no next line, jump to end of script and exit. */ + goto discard_line; } - /* fall through */ + free(pattern_space); + pattern_space = next_line; + last_gets_char = next_gets_char; + next_line = get_next_line(&next_gets_char, &last_puts_char); + substituted = 0; + linenum++; + break; /* Quit. End of script, end of input. */ case 'q': -- cgit v1.2.3