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);
 }