From: "Roberto E. Vargas Caballero" <[email protected]>
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