diff --git a/src/TEScreen.C b/src/TEScreen.C index 3f49ca4d..96cc6f24 100644 --- a/src/TEScreen.C +++ b/src/TEScreen.C @@ -202,7 +202,7 @@ char *TEScreen::getSelText(const BOOL preserve_line_breaks) if ( s < hist_BR ) { // get lines from history buffer. eol=histBuffer[hY]->len; - if ((hY == (sel_BR/columns)) && (eol >= (sel_BR%columns)) ) eol=sel_BR%columns; + if ((hY == (sel_BR/columns)) && (eol >= (sel_BR%columns)) ) eol=sel_BR%columns+1; while ( hX < eol ) { m[d++] = histBuffer[hY]->line[hX++].c; @@ -227,13 +227,13 @@ char *TEScreen::getSelText(const BOOL preserve_line_breaks) eol = (s/columns + 1)*columns - 1 ; if ( eol < sel_BR ) { - while ((eol > s) && isspace(image[eol-hist_BR].c)) eol-- ; + while ((eol > s) && isspace(image[eol-hist_BR-columns].c)) eol-- ; } else { eol = sel_BR ; } - while (s <= eol) m[d++] = image[s++-hist_BR].c; + while (s <= eol) m[d++] = image[s++-hist_BR-columns].c; /* end of line processing for selection -- psilva cases: @@ -261,7 +261,7 @@ FIXME: */ if (eol < sel_BR) { if ( (eol+1)%columns == 0) { - if (image[eol-hist_BR].c == ' ') m[d++]=' '; + if (image[eol-hist_BR-columns].c == ' ') m[d++]=' '; } else m[d++]=(preserve_line_breaks||((eol%columns)==0)?'\n':' '); }