From feeb6e32792b1e4611a9a57476417fcf6b49e6c8 Mon Sep 17 00:00:00 2001 From: "Roberto E. Vargas Caballero" Date: Fri, 22 Sep 2023 19:43:37 +0200 Subject: [PATCH] ed: Don't discard full lines Discard() was reading stdin until a new line was found, but in case of having an empty line in the input buffer then it didn't make sense because we were just discarding the full next line. --- ed.c | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/ed.c b/ed.c index e6ca22b..9443f6e 100644 --- a/ed.c +++ b/ed.c @@ -76,15 +76,14 @@ discard(void) { int c; - if (repidx >= 0) + if (repidx >= 0 || cmdline.siz == 0) return; /* discard until the end of the line */ - if (cmdline.siz > 0 && cmdline.str[cmdline.siz-1] == '\n') - return; - - while ((c = getchar()) != '\n' && c != EOF) - ; + if (cmdline.str[cmdline.siz-1] != '\n') { + while ((c = getchar()) != '\n' && c != EOF) + ; + } } static void undo(void);