Simplify a bit more tdeletechar and tinsertblank - st - Simple Terminal
Log
Files
Refs
README
LICENSE
---
commit 6b7f63bac597ca03e18fe63ad522b4d1bded08d1
parent 80b32af794b659cb15745cfb2a19fce0829c42c7
Author: Roberto E. Vargas Caballero 
Date:   Fri, 25 Apr 2014 17:24:12 +0200

Simplify a bit more tdeletechar and tinsertblank

The large and repeated expression used in memmove to indirect
the line can be simplified using a pointer, that makes more
clear where begins and where ends the movement.

Diffstat:
  st.c                                |      10 ++++++----

1 file changed, 6 insertions(+), 4 deletions(-)
---
diff --git a/st.c b/st.c
@@ -1587,30 +1587,32 @@ tclearregion(int x1, int y1, int x2, int y2) {
 void
 ttdeletechar(int n) {
         int dst, src, size;
+        Glyph *line;
 
         LIMIT(n, 0, term.col - term.c.x);
 
         dst = term.c.x;
         src = term.c.x + n;
         size = term.col - src;
+        line = term.line[term.c.y];
 
-        memmove(&term.line[term.c.y][dst], &term.line[term.c.y][src],
-                size * sizeof(Glyph));
+        memmove(&line[dst], &line[src], size * sizeof(Glyph));
         tclearregion(term.col-n, term.c.y, term.col-1, term.c.y);
 }
 
 void
 ttinsertblank(int n) {
         int dst, src, size;
+        Glyph *line;
 
         LIMIT(n, 0, term.col - term.c.x);
 
         dst = term.c.x + n;
         src = term.c.x;
         size = term.col - dst;
+        line = term.line[term.c.y];
 
-        memmove(&term.line[term.c.y][dst], &term.line[term.c.y][src],
-                size * sizeof(Glyph));
+        memmove(&line[dst], &line[src], size * sizeof(Glyph));
         tclearregion(src, term.c.y, dst - 1, term.c.y);
 }