--- rxvt-unicode/src/command.C 2005/12/20 22:27:49 1.211 +++ rxvt-unicode/src/command.C 2005/12/23 14:46:34 1.215 @@ -143,7 +143,7 @@ for (;;) { - const line_t &l = ROW(-view_start); + const line_t &l = ROW(y - view_start); text_t t = l.t[x]; @@ -1069,8 +1069,13 @@ cmdbuf_endp += n; return true; } - else if (n < 0 && errno != EAGAIN) - destroy (); + else if ((n < 0 && errno != EAGAIN && errno != EINTR) || n == 0) + { + pty_ev.stop (); + + if (!(options & Opt_hold)) + destroy (); + } return false; } @@ -1602,7 +1607,7 @@ scroll_selection_lines = Pixel2Height (dist) / SELECTION_SCROLL_LINE_SPEEDUP + 1; - MIN_IT (scroll_selection_lines, + min_it (scroll_selection_lines, SELECTION_SCROLL_MAX_LINES); } else @@ -2453,8 +2458,8 @@ sy = 0; } - MIN_IT (nw, (unsigned int) (wrootattr.width - sx)); - MIN_IT (nh, (unsigned int) (wrootattr.height - sy)); + min_it (nw, (unsigned int) (wrootattr.width - sx)); + min_it (nh, (unsigned int) (wrootattr.height - sy)); XSync (disp, False); allowedxerror = -1; @@ -4374,8 +4379,7 @@ memmove (v_buffer, v_buffer + written, v_buflen); } else if (written != -1 || (errno != EAGAIN && errno != EINTR)) - // original code just ignores this... - destroy (); + pty_ev.set (EVENT_READ); } /*----------------------- end-of-file (C source) -----------------------*/