repo: rxvt-unicode-sixel action: commit revision: path_from: revision_from: b4095f0a44485fe41cb3b58bf692e9a85ffb3d6a: path_to: revision_to:
commit b4095f0a44485fe41cb3b58bf692e9a85ffb3d6a Author: Marc LehmannDate: Sun Feb 1 20:12:53 2004 +0000 *** empty log message *** diff --git a/Changes b/Changes
--- 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
--- 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
--- 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));
-----END OF PAGE-----