Fix core in multi-line selection on OpenBSD
authorMaurice Quennet <mjq@gmx.net>
Sat, 21 Sep 2013 21:33:56 +0000 (23:33 +0200)
committerRoberto E. Vargas Caballero <k0ga@shike2.com>
Mon, 23 Sep 2013 17:26:24 +0000 (19:26 +0200)
OpenBSD 5.3 amd64 release version with the most current st
version from git, crash and dump core when selecting multiple
lines whith the cursor.  This happens, because on line 964
of st.c (gp-1)->mode is accessed, although gp is still
pointing at the beginning of the array term.line[y] (see
line 939 for initialization of gp).

st.c

diff --git a/st.c b/st.c
index df58e9e..c3a04c5 100644 (file)
--- a/st.c
+++ b/st.c
@@ -962,7 +962,7 @@ selcopy(void) {
                         * st.
                         * FIXME: Fix the computer world.
                         */
-                       if(y < sel.ne.y && !((gp-1)->mode & ATTR_WRAP))
+                       if(y < sel.ne.y && x > 0 && !((gp-1)->mode & ATTR_WRAP))
                                *ptr++ = '\n';
 
                        /*