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).
 
        /* append every set & selected glyph to the selection */
        for (y = sel.nb.y; y <= sel.ne.y; y++) {
-               linelen = tlinelen(y);
+               if ((linelen = tlinelen(y)) == 0) {
+                       *ptr++ = '\n';
+                       continue;
+               }
 
                if (sel.type == SEL_RECTANGULAR) {
                        gp = &term.line[y][sel.nb.x];