--- rxvt-unicode/src/command.C 2005/12/21 14:19:19 1.212 +++ 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; } @@ -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) -----------------------*/