[newlib-cygwin] Fix console clear screen in case of partial scrolling

Corinna Vinschen corinna@sourceware.org
Mon Aug 1 10:43:00 GMT 2016


https://sourceware.org/git/gitweb.cgi?p=newlib-cygwin.git;h=05847ad6e9b505b0d66292bc7ca126e323be3e23

commit 05847ad6e9b505b0d66292bc7ca126e323be3e23
Author: Corinna Vinschen <corinna@vinschen.de>
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 <corinna@vinschen.de>

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;



More information about the Cygwin-cvs mailing list