https://sourceware.org/git/gitweb.cgi?p=newlib-cygwin.git;h=05847ad6e9b505b0d66292bc7ca126e323be3e23
commit 05847ad6e9b505b0d66292bc7ca126e323be3e23 Author: Corinna Vinschen <[email protected]> Date: Mon Aug 1 12:35:51 2016 +0200 Fix console clear screen in case of partial scrolling Commit d7586cb incorrectly checked only for the new cursor position beyond the old cursor position to decide if we have to correct for user scrolling. Since this situation is handled just fine if the cursor is still visible, only perform the subsequent correction if the cursor is not in the visible console window. Signed-off-by: Corinna Vinschen <[email protected]> Diff: --- winsup/cygwin/fhandler_console.cc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/winsup/cygwin/fhandler_console.cc b/winsup/cygwin/fhandler_console.cc index f083f7e..24e3a10 100644 --- a/winsup/cygwin/fhandler_console.cc +++ b/winsup/cygwin/fhandler_console.cc @@ -1288,8 +1288,8 @@ fhandler_console::clear_screen (cltype xc1, cltype yc1, cltype xc2, cltype yc2) /* Make correction for the following situation: The console buffer is only partially used and the user scrolled down into the as yet - unused area. */ - if (oldEndY < con.dwEnd.Y) + unused area so far that the cursor is outside the window buffer. */ + if (oldEndY < con.dwEnd.Y && oldEndY < con.b.srWindow.Top) { con.dwEnd.Y = con.b.dwCursorPosition.Y = oldEndY; y1 = con.b.srWindow.Top;
