ifix bug in paste at point - gramscii - A simple editor for ASCII box-and-arrow charts Err bitreich.org 70 1Log /scm/gramscii/log.gph bitreich.org 70 1Files /scm/gramscii/files.gph bitreich.org 70 1Refs /scm/gramscii/refs.gph bitreich.org 70 1Tags /scm/gramscii/tag bitreich.org 70 1README /scm/gramscii/file/README.md.gph bitreich.org 70 1LICENSE /scm/gramscii/file/COPYING.gph bitreich.org 70 i--- Err bitreich.org 70 1commit 6da2f3f89afda08eeba385da1c36414154113d47 /scm/gramscii/commit/6da2f3f89afda08eeba385da1c36414154113d47.gph bitreich.org 70 1parent eebc645dee0d15871d6cc46f156d424cd916b191 /scm/gramscii/commit/eebc645dee0d15871d6cc46f156d424cd916b191.gph bitreich.org 70 hAuthor: KatolaZ URL:mailto:katolaz@freaknet.org bitreich.org 70 iDate: Tue, 30 Jul 2019 16:25:49 +0100 Err bitreich.org 70 i Err bitreich.org 70 ifix bug in paste at point Err bitreich.org 70 i Err bitreich.org 70 iDiffstat: Err bitreich.org 70 i M lineset.c | 15 ++++++++++++--- Err bitreich.org 70 i Err bitreich.org 70 i1 file changed, 12 insertions(+), 3 deletions(-) Err bitreich.org 70 i--- Err bitreich.org 70 1diff --git a/lineset.c b/lineset.c /scm/gramscii/file/lineset.c.gph bitreich.org 70 i@@ -102,16 +102,25 @@ void yank_region(int x1, int y1, int x2, int y2){ Err bitreich.org 70 i Err bitreich.org 70 i Err bitreich.org 70 i void paste_region(int x1, int y1){ Err bitreich.org 70 i- int i, curlen; Err bitreich.org 70 i+ int i, curlen, pastelen; Err bitreich.org 70 i Err bitreich.org 70 i i = y1; Err bitreich.org 70 i while( i < HEIGHT && i < y1 + cutbuf.num){ Err bitreich.org 70 i- memcpy(screen.l[i].s + x1, cutbuf.l[i-y1].s, strlen(cutbuf.l[i-y1].s)); Err bitreich.org 70 i+ pastelen = strlen(cutbuf.l[i-y1].s); Err bitreich.org 70 i curlen = strlen(screen.l[i].s); Err bitreich.org 70 i+ memcpy(screen.l[i].s + x1, cutbuf.l[i-y1].s, pastelen); Err bitreich.org 70 i if (curlen <= x1) Err bitreich.org 70 i /* double-check this line below */ Err bitreich.org 70 i- pad_line_to_length(screen.l[i].s+curlen, x1 - curlen); Err bitreich.org 70 i+ pad_line_to_length(screen.l[i].s + curlen, x1 - curlen); Err bitreich.org 70 i+ if (curlen <= x1 + pastelen) Err bitreich.org 70 i+ screen.l[i].s[x1 + pastelen] = '\0'; Err bitreich.org 70 i+ Err bitreich.org 70 i+ screen.l[i].lst = strlen(screen.l[i].s) - 1; Err bitreich.org 70 i+#ifdef DEBUG Err bitreich.org 70 i+ fprintf(stderr, "%d.lst: %d\n", i, screen.l[i].lst); Err bitreich.org 70 i+#endif Err bitreich.org 70 i i += 1; Err bitreich.org 70 i modified = 1; Err bitreich.org 70 i } Err bitreich.org 70 i+ redraw(); Err bitreich.org 70 i } Err bitreich.org 70 .