From: "Roberto E. Vargas Caballero" <k...@shike2.com>

Copy was using directly the line numbers and incrementing them
without calling to nextln(). It also didn't worried about how
line numbers are modified when we insert new lines.
---
 ed.c | 11 ++++++++---
 1 file changed, 8 insertions(+), 3 deletions(-)

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
-- 
2.14.2


Reply via email to