Simplify a bit more tdeletechar and tinsertblank - st - simple terminal HTML git clone https://git.parazyd.org/st DIR Log DIR Files DIR Refs DIR README DIR LICENSE --- DIR commit 6b7f63bac597ca03e18fe63ad522b4d1bded08d1 DIR parent 80b32af794b659cb15745cfb2a19fce0829c42c7 HTML Author: Roberto E. Vargas Caballero <k0ga@shike2.com> 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: M st.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) --- DIR diff --git 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); }