aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRoberto E. Vargas Caballero <k0ga@shike2.com>2015-09-10 11:53:11 +0200
committerRoberto E. Vargas Caballero <k0ga@shike2.com>2015-09-10 11:53:11 +0200
commit5d2d9d540d84761cf11648ea42a6413001a5d7b9 (patch)
tree3d15230f53a13be4bc2498da1e67c356b52a8a11
parenta1ed5071e54e4f8ce765c07d5415da7d8cedf618 (diff)
downloadst-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.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/st.c b/st.c
index 530d7e4..bd8b815 100644
--- a/st.c
+++ b/st.c
@@ -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];