From: pcg Date: Sun, 1 Feb 2004 20:12:51 +0000 (+0000) Subject: *** empty log message *** X-Git-Url: http://git.openbox.org/?a=commitdiff_plain;h=a64e919534c20b39253242713400e7ea62005705;p=dana%2Furxvt.git *** empty log message *** --- diff --git a/Changes b/Changes index c9b7a823..57a28dd2 100644 --- a/Changes +++ b/Changes @@ -5,6 +5,8 @@ - re-enabled multiple scrollbar support. - added plain scrollbar style and restored xterm scrollbar. - blinking and selections work slightly better now. + - fix an error condition when rxvt receives more than one screenful + of output. should occur with original rxvt, too, but very rarely. 1.7 Fri Jan 30 16:50:11 CET 2004 - further cleanups. diff --git a/src/command.C b/src/command.C index 49efc8e4..cd777c31 100644 --- a/src/command.C +++ b/src/command.C @@ -932,6 +932,14 @@ rxvt_term::pty_cb (io_watcher &w, short revents) ch = NOCHAR; break; } + + // scr_add_lines only works for nlines < TermWin.nrow - 1. + if (nlines >= TermWin.nrow - 1) + { + scr_add_lines (buf, nlines, str - buf); + nlines = 0; + str = buf; + } } if (str >= buf + BUFSIZ) diff --git a/src/screen.C b/src/screen.C index 23ccb585..37aa045c 100644 --- a/src/screen.C +++ b/src/screen.C @@ -889,17 +889,17 @@ rxvt_term::scr_add_lines (const uint32_t *str, int nlines, int len) if (charsets[screen.charset] == '0') // DEC SPECIAL switch (c) { - case '+': c = 0x2192; break; case ',': c = 0x2190; break; case '-': c = 0x2191; break; - case '.': c = 0x2193; break; case '0': c = 0x25ae; break; case '`': c = 0x25c6; break; - case 'a': c = 0x2592; break; case 'f': c = 0x00b0; break; case 'g': c = 0x00b1; break; - case 'h': c = 0x2592; break; case 'i': c = 0x2603; break; case 'j': c = 0x2518; break; - case 'k': c = 0x2510; break; case 'l': c = 0x250c; break; case 'm': c = 0x2514; break; - case 'n': c = 0x253c; break; case 'o': c = 0x23ba; break; case 'p': c = 0x23bb; break; - case 'q': c = 0x2500; break; case 'r': c = 0x23bc; break; case 's': c = 0x23bd; break; - case 't': c = 0x251c; break; case 'u': c = 0x2524; break; case 'v': c = 0x2534; break; - case 'w': c = 0x252c; break; case 'x': c = 0x2502; break; case 'y': c = 0x2264; break; - case 'z': c = 0x2265; break; case '{': c = 0x03c0; break; case '|': c = 0x2260; break; - case '}': c = 0x00a3; break; case '~': c = 0x00b7; break; + case '+': c = 0x2192; break; case ',': c = 0x2190; break; case '-': c = 0x2191; break; + case '.': c = 0x2193; break; case '0': c = 0x25ae; break; case '`': c = 0x25c6; break; + case 'a': c = 0x2592; break; case 'f': c = 0x00b0; break; case 'g': c = 0x00b1; break; + case 'h': c = 0x2592; break; case 'i': c = 0x2603; break; case 'j': c = 0x2518; break; + case 'k': c = 0x2510; break; case 'l': c = 0x250c; break; case 'm': c = 0x2514; break; + case 'n': c = 0x253c; break; case 'o': c = 0x23ba; break; case 'p': c = 0x23bb; break; + case 'q': c = 0x2500; break; case 'r': c = 0x23bc; break; case 's': c = 0x23bd; break; + case 't': c = 0x251c; break; case 'u': c = 0x2524; break; case 'v': c = 0x2534; break; + case 'w': c = 0x252c; break; case 'x': c = 0x2502; break; case 'y': c = 0x2264; break; + case 'z': c = 0x2265; break; case '{': c = 0x03c0; break; case '|': c = 0x2260; break; + case '}': c = 0x00a3; break; case '~': c = 0x00b7; break; } rend_t rend = SET_FONT (rstyle, TermWin.fontset->find_font (c));