Jacek Caban : conhost: Avoid assumption about the exact Unix cursor position after writing to the last column.
Module: wine Branch: stable Commit: a4ac7faab9effb60f9d5ec5bb8c8df149ea2cad4 URL: https://source.winehq.org/git/wine.git/?a=commit;h=a4ac7faab9effb60f9d5ec5bb... Author: Jacek Caban <jacek(a)codeweavers.com> Date: Tue Feb 16 20:32:33 2021 +0100 conhost: Avoid assumption about the exact Unix cursor position after writing to the last column. Spotted by Roman Pišl. Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=50581 Signed-off-by: Jacek Caban <jacek(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> (cherry picked from commit 9e97f3513eeea8da96654e9843579461649c3597) Signed-off-by: Michael Stefaniuc <mstefani(a)winehq.org> --- programs/conhost/conhost.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/programs/conhost/conhost.c b/programs/conhost/conhost.c index dd22636be6a..fbee37d9c01 100644 --- a/programs/conhost/conhost.c +++ b/programs/conhost/conhost.c @@ -195,6 +195,14 @@ static void set_tty_cursor( struct console *console, unsigned int x, unsigned in else if (!x && y == console->tty_cursor_y) strcpy( buf, "\r" ); else if (y == console->tty_cursor_y) { + if (console->is_unix && console->tty_cursor_x >= console->active->width) + { + /* Unix will usually have the cursor at width-1 in this case. instead of depending + * on the exact behaviour, move the cursor to the first column and move forward + * from threre. */ + tty_write( console, "\r", 1 ); + console->tty_cursor_x = 0; + } if (x + 1 == console->tty_cursor_x) strcpy( buf, "\b" ); else if (x > console->tty_cursor_x) sprintf( buf, "\x1b[%uC", x - console->tty_cursor_x ); else sprintf( buf, "\x1b[%uD", console->tty_cursor_x - x );
participants (1)
-
Alexandre Julliard