[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] Changes to emacs/src/xdisp.c,v
From: |
Chong Yidong |
Subject: |
[Emacs-diffs] Changes to emacs/src/xdisp.c,v |
Date: |
Sat, 23 Aug 2008 02:11:58 +0000 |
CVSROOT: /sources/emacs
Module name: emacs
Changes by: Chong Yidong <cyd> 08/08/23 02:11:57
Index: xdisp.c
===================================================================
RCS file: /sources/emacs/emacs/src/xdisp.c,v
retrieving revision 1.1248
retrieving revision 1.1249
diff -u -b -r1.1248 -r1.1249
--- xdisp.c 20 Aug 2008 17:50:20 -0000 1.1248
+++ xdisp.c 23 Aug 2008 02:11:56 -0000 1.1249
@@ -167,6 +167,7 @@
#include <config.h>
#include <stdio.h>
+#include <limits.h>
#include "lisp.h"
#include "keyboard.h"
@@ -12641,6 +12642,7 @@
int dy = 0, amount_to_scroll = 0, scroll_down_p = 0;
int extra_scroll_margin_lines = last_line_misfit ? 1 : 0;
Lisp_Object aggressive;
+ int scroll_limit = INT_MAX / FRAME_LINE_HEIGHT (f);
#if GLYPH_DEBUG
debug_method_add (w, "try_scrolling");
@@ -12658,26 +12660,28 @@
else
this_scroll_margin = 0;
- /* Force scroll_conservatively to have a reasonable value so it doesn't
- cause an overflow while computing how much to scroll. */
- if (scroll_conservatively)
- scroll_conservatively = min (scroll_conservatively,
- MOST_POSITIVE_FIXNUM / FRAME_LINE_HEIGHT (f));
-
- /* Compute how much we should try to scroll maximally to bring point
- into view. */
- if (scroll_step || scroll_conservatively || temp_scroll_step)
- scroll_max = max (scroll_step,
- max (scroll_conservatively, temp_scroll_step));
+ /* Force scroll_conservatively to have a reasonable value, to avoid
+ overflow while computing how much to scroll. Note that it's
+ fairly common for users to supply scroll-conservatively equal to
+ `most-positive-fixnum', which can be larger than INT_MAX. */
+ if (scroll_conservatively > scroll_limit)
+ {
+ scroll_conservatively = scroll_limit;
+ scroll_max = INT_MAX;
+ }
+ else if (scroll_step || scroll_conservatively || temp_scroll_step)
+ /* Compute how much we should try to scroll maximally to bring
+ point into view. */
+ scroll_max = (max (scroll_step,
+ max (scroll_conservatively, temp_scroll_step))
+ * FRAME_LINE_HEIGHT (f));
else if (NUMBERP (current_buffer->scroll_down_aggressively)
|| NUMBERP (current_buffer->scroll_up_aggressively))
- /* We're trying to scroll because of aggressive scrolling
- but no scroll_step is set. Choose an arbitrary one. Maybe
- there should be a variable for this. */
- scroll_max = 10;
+ /* We're trying to scroll because of aggressive scrolling but no
+ scroll_step is set. Choose an arbitrary one. */
+ scroll_max = 10 * FRAME_LINE_HEIGHT (f);
else
scroll_max = 0;
- scroll_max *= FRAME_LINE_HEIGHT (f);
too_near_end:
- [Emacs-diffs] Changes to emacs/src/xdisp.c,v, Adrian Robert, 2008/08/04
- [Emacs-diffs] Changes to emacs/src/xdisp.c,v, Chong Yidong, 2008/08/05
- [Emacs-diffs] Changes to emacs/src/xdisp.c,v, Chong Yidong, 2008/08/06
- [Emacs-diffs] Changes to emacs/src/xdisp.c,v, Chong Yidong, 2008/08/06
- [Emacs-diffs] Changes to emacs/src/xdisp.c,v, Chong Yidong, 2008/08/08
- [Emacs-diffs] Changes to emacs/src/xdisp.c,v, Chong Yidong, 2008/08/11
- [Emacs-diffs] Changes to emacs/src/xdisp.c,v, Chong Yidong, 2008/08/17
- [Emacs-diffs] Changes to emacs/src/xdisp.c,v,
Chong Yidong <=
- [Emacs-diffs] Changes to emacs/src/xdisp.c,v, Eli Zaretskii, 2008/08/23
- [Emacs-diffs] Changes to emacs/src/xdisp.c,v, Chong Yidong, 2008/08/28
- [Emacs-diffs] Changes to emacs/src/xdisp.c,v, Glenn Morris, 2008/08/29
- [Emacs-diffs] Changes to emacs/src/xdisp.c,v, Kenichi Handa, 2008/08/29
- [Emacs-diffs] Changes to emacs/src/xdisp.c,v, Martin Rudalics, 2008/08/31