commit feeb6e32792b1e4611a9a57476417fcf6b49e6c8
Author:     Roberto E. Vargas Caballero <[email protected]>
AuthorDate: Fri Sep 22 19:43:37 2023 +0200
Commit:     Roberto E. Vargas Caballero <[email protected]>
CommitDate: Fri Sep 22 20:44:17 2023 +0200

    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.

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);

Reply via email to