commit 9781959581c4c150decd0c7cbc325da23eb009d3
Author:     Roberto E. Vargas Caballero <[email protected]>
AuthorDate: Sun Mar 4 17:08:14 2018 +0100
Commit:     sin <[email protected]>
CommitDate: Tue Jul 3 09:31:46 2018 +0100

    Fix copy()
    
    Copy was using directly the line numbers and incrementing them
    without calling nextln(). It also didn't worry about how
    line numbers are modified when we insert new lines.

diff --git a/ed.c b/ed.c
index 70dd2a5..13c41c6 100644
--- a/ed.c
+++ b/ed.c
@@ -854,14 +854,19 @@ scroll(int num)
 static void
 copy(int where)
 {
-       int i;
 
        if (!line1)
                error("incorrect address");
        curln = where;
 
-       for (i = line1; i <= line2; ++i)
-               inject(gettxt(i), AFTER);
+       while (line1 <= line2) {
+               inject(gettxt(line1), AFTER);
+               if (line2 >= curln)
+                       line2 = nextln(line2);
+               line1 = nextln(line1);
+               if (line1 >= curln)
+                       line1 = nextln(line1);
+       }
 }
 
 static void

Reply via email to