aboutsummaryrefslogtreecommitdiffstats
path: root/st.c
diff options
context:
space:
mode:
authorRoberto E. Vargas Caballero <k0ga@shike2.com>2014-04-25 17:24:12 +0200
committerRoberto E. Vargas Caballero <k0ga@shike2.com>2014-04-25 17:25:59 +0200
commit6b7f63bac597ca03e18fe63ad522b4d1bded08d1 (patch)
treecc883bfef81e58f1d8b39f109b05959c5660354b /st.c
parent80b32af794b659cb15745cfb2a19fce0829c42c7 (diff)
downloadst-6b7f63bac597ca03e18fe63ad522b4d1bded08d1.tar.gz
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 (limited to 'st.c')
-rw-r--r--st.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/st.c b/st.c
index 263abaa..e468d73 100644
--- a/st.c
+++ b/st.c
@@ -1587,30 +1587,32 @@ tclearregion(int x1, int y1, int x2, int y2) {
void
tdeletechar(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
tinsertblank(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);
}
remember that computers suck.