diff --git a/tty.c b/tty.c index a6dac18d..c31706f7 100644 --- a/tty.c +++ b/tty.c @@ -1,4 +1,4 @@ -/* $Id: tty.c,v 1.158 2009-10-23 17:16:24 tcunha Exp $ */ +/* $Id: tty.c,v 1.159 2009-10-23 17:22:39 tcunha Exp $ */ /* * Copyright (c) 2007 Nicholas Marriott @@ -960,6 +960,15 @@ tty_region(struct tty *tty, u_int rupper, u_int rlower) tty->rupper = rupper; tty->rlower = rlower; + /* + * Some terminals (such as PuTTY) do not correctly reset the cursor to + * 0,0 if it is beyond the last column (they do not reset their wrap + * flag so further output causes a line feed). As a workaround, do an + * explicit move to 0 first. + */ + if (tty->cx >= tty->sx) + tty_cursor(tty, 0, tty->cy); + tty->cx = 0; tty->cy = 0;