File mscroll_deep_recursion.diff of Package screen.18256

--- ./ansi.c.orig	2019-04-25 13:09:54.026859270 +0000
+++ ./ansi.c	2019-04-25 13:13:00.690407783 +0000
@@ -2499,13 +2499,13 @@ int n, ys, ye, bce;
     return;
   if (n > 0)
     {
+      if (ye - ys + 1 < n)
+	n = ye - ys + 1;
       if (n > 256)
 	{
 	  MScrollV(p, n - 256, ys, ye, bce);
 	  n = 256;
 	}
-      if (ye - ys + 1 < n)
-	n = ye - ys + 1;
 #ifdef COPY_PASTE
       if (compacthist)
 	{
@@ -2559,14 +2559,14 @@ int n, ys, ye, bce;
     }
   else
     {
-      if (n < -256)
-	{
-	  MScrollV(p, n + 256, ys, ye, bce);
-	  n = -256;
-	}
       n = -n;
       if (ye - ys + 1 < n)
 	n = ye - ys + 1;
+      if (n > 256)
+	{
+	  MScrollV(p, -(n - 256), ys, ye, bce);
+	  n = 256;
+	}
 
       ml = p->w_mlines + ye;
       /* Clear lines */
openSUSE Build Service is sponsored by