--- a/ansi.c +++ b/ansi.c @@ -2502,13 +2502,13 @@ 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) { @@ -2562,15 +2562,14 @@ } else { + n = -n; + if (ye - ys + 1 < n) + n = ye - ys + 1; if (n < -256) { MScrollV(p, n + 256, ys, ye, bce); n = -256; } - n = -n; - if (ye - ys + 1 < n) - n = ye - ys + 1; - ml = p->w_mlines + ye; /* Clear lines */ for (i = ye; i > ye - n; i--, ml--)