diff options
author | Roberto E. Vargas Caballero <k0ga@shike2.com> | 2015-09-10 11:53:11 +0200 |
---|---|---|
committer | Roberto E. Vargas Caballero <k0ga@shike2.com> | 2015-09-10 11:53:11 +0200 |
commit | 5d2d9d540d84761cf11648ea42a6413001a5d7b9 (patch) | |
tree | 3d15230f53a13be4bc2498da1e67c356b52a8a11 | |
parent | a1ed5071e54e4f8ce765c07d5415da7d8cedf618 (diff) | |
download | st-patched-5d2d9d540d84761cf11648ea42a6413001a5d7b9.tar.bz2 st-patched-5d2d9d540d84761cf11648ea42a6413001a5d7b9.tar.xz st-patched-5d2d9d540d84761cf11648ea42a6413001a5d7b9.zip |
Fix copy of line with len = 0
When a line has no any character linelen is 0, so last = &term.line[y][MIN(lastx, linelen-1)]
generated a pointer to the end of the previous line. The best thing we can do in this case
is to add a newline, because we don't have a glyph to print (and consult its state of
wrapping).
-rw-r--r-- | st.c | 5 |
1 files changed, 4 insertions, 1 deletions
@@ -1004,7 +1004,10 @@ getsel(void) | |||
1004 | 1004 | ||
1005 | /* append every set & selected glyph to the selection */ | 1005 | /* append every set & selected glyph to the selection */ |
1006 | for (y = sel.nb.y; y <= sel.ne.y; y++) { | 1006 | for (y = sel.nb.y; y <= sel.ne.y; y++) { |
1007 | linelen = tlinelen(y); | 1007 | if ((linelen = tlinelen(y)) == 0) { |
1008 | *ptr++ = '\n'; | ||
1009 | continue; | ||
1010 | } | ||
1008 | 1011 | ||
1009 | if (sel.type == SEL_RECTANGULAR) { | 1012 | if (sel.type == SEL_RECTANGULAR) { |
1010 | gp = &term.line[y][sel.nb.x]; | 1013 | gp = &term.line[y][sel.nb.x]; |