*** empty log message ***
authorpcg <pcg>
Sun, 1 Feb 2004 20:12:51 +0000 (20:12 +0000)
committerpcg <pcg>
Sun, 1 Feb 2004 20:12:51 +0000 (20:12 +0000)
Changes
src/command.C
src/screen.C

diff --git a/Changes b/Changes
index c9b7a8230c25c1b566dce0956e98d70cdfc764b6..57a28dd2011036b1672e8a802442a13eb100194f 100644 (file)
--- 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.
index 49efc8e45ba24a22fcbb91e915f3786f7cf29a4f..cd777c311f315c26a548c2ed477937cb62d0a013 100644 (file)
@@ -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)
index 23ccb58529fe5656a5bb501944a4585013f97532..37aa045c06c48389bb710e0c8987657f1c93bed9 100644 (file)
@@ -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));