aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRian Hunter <rian@alum.mit.edu>2015-01-29 15:00:39 -0800
committerRoberto E. Vargas Caballero <k0ga@shike2.com>2015-02-05 20:28:00 +0100
commitaba6c292af347588b9c2f5d1a400a6270b5a447f (patch)
treecdfe5988a57af7d3e3a5c95f0a5c6ca5d9ad3f06
parent4d14d97547d335974e98aa612ac5b4fcfc25e1d9 (diff)
downloadst-aba6c292af347588b9c2f5d1a400a6270b5a447f.tar.gz
st-aba6c292af347588b9c2f5d1a400a6270b5a447f.tar.bz2
Correct shift amount on MODE_INSERT in tputc()
When MODE_INSERT is set we'd shift characters on the same line forward before inserting our character in tputc(). This did not account for wide characters where width != 1. This patch makes it so we shift the correct amount.
-rw-r--r--st.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/st.c b/st.c
index 6a68c3c..1deb7bc 100644
--- a/st.c
+++ b/st.c
@@ -2676,8 +2676,8 @@ tputc(char *c, int len) {
gp = &term.line[term.c.y][term.c.x];
}
- if(IS_SET(MODE_INSERT) && term.c.x+1 < term.col)
- memmove(gp+1, gp, (term.col - term.c.x - 1) * sizeof(Glyph));
+ if(IS_SET(MODE_INSERT) && term.c.x+width < term.col)
+ memmove(gp+width, gp, (term.col - term.c.x - width) * sizeof(Glyph));
if(term.c.x+width > term.col) {
tnewline(1);