]> git.eshelyaron.com Git - emacs.git/commitdiff
(decode_mode_spec): For p and P, avoid overflow with large buffer sizes.
authorRichard M. Stallman <rms@gnu.org>
Mon, 27 Nov 1995 03:03:33 +0000 (03:03 +0000)
committerRichard M. Stallman <rms@gnu.org>
Mon, 27 Nov 1995 03:03:33 +0000 (03:03 +0000)
src/xdisp.c

index a1b5a2ea88f9d36781e83227f558dcb04feb1c8c..86836714dcff6f9befef0cbcc0b1ecf9d3bc6d70 100644 (file)
@@ -3790,7 +3790,11 @@ decode_mode_spec (w, c, spec_width, maxwidth)
          return "Top";
        else
          {
-           total = ((pos - BUF_BEGV (b)) * 100 + total - 1) / total;
+           if (total > 1000000)
+             /* Do it differently for a large value, to avoid overflow.  */
+             total = ((pos - BUF_BEGV (b)) + (total / 100) - 1) / (total / 100);
+           else
+             total = ((pos - BUF_BEGV (b)) * 100 + total - 1) / total;
            /* We can't normally display a 3-digit number,
               so get us a 2-digit number that is close.  */
            if (total == 100)
@@ -3816,7 +3820,11 @@ decode_mode_spec (w, c, spec_width, maxwidth)
          }
        else
          {
-           total = ((botpos - BUF_BEGV (b)) * 100 + total - 1) / total;
+           if (total > 1000000)
+             /* Do it differently for a large value, to avoid overflow.  */
+             total = ((botpos - BUF_BEGV (b)) + (total / 100) - 1) / (total / 100);
+           else
+             total = ((botpos - BUF_BEGV (b)) * 100 + total - 1) / total;
            /* We can't normally display a 3-digit number,
               so get us a 2-digit number that is close.  */
            if (total == 100)