[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] emacs/src ChangeLog xdisp.c
From: |
Andreas Schwab |
Subject: |
[Emacs-diffs] emacs/src ChangeLog xdisp.c |
Date: |
Fri, 11 Sep 2009 16:46:11 +0000 |
CVSROOT: /sources/emacs
Module name: emacs
Changes by: Andreas Schwab <schwab> 09/09/11 16:46:11
Modified files:
src : ChangeLog xdisp.c
Log message:
(display_mode_element): Detect cycles.
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/emacs/src/ChangeLog?cvsroot=emacs&r1=1.7740&r2=1.7741
http://cvs.savannah.gnu.org/viewcvs/emacs/src/xdisp.c?cvsroot=emacs&r1=1.1298&r2=1.1299
Patches:
Index: ChangeLog
===================================================================
RCS file: /sources/emacs/emacs/src/ChangeLog,v
retrieving revision 1.7740
retrieving revision 1.7741
diff -u -b -r1.7740 -r1.7741
--- ChangeLog 11 Sep 2009 05:10:15 -0000 1.7740
+++ ChangeLog 11 Sep 2009 16:46:08 -0000 1.7741
@@ -1,3 +1,7 @@
+2009-09-11 Andreas Schwab <address@hidden>
+
+ * xdisp.c (display_mode_element): Detect cycles.
+
2009-09-11 Stefan Monnier <address@hidden>
* keymap.c (where_is_internal): Don't erroneously return nil right after
Index: xdisp.c
===================================================================
RCS file: /sources/emacs/emacs/src/xdisp.c,v
retrieving revision 1.1298
retrieving revision 1.1299
diff -u -b -r1.1298 -r1.1299
--- xdisp.c 10 Sep 2009 03:20:52 -0000 1.1298
+++ xdisp.c 11 Sep 2009 16:46:10 -0000 1.1299
@@ -17750,14 +17750,10 @@
}
else if (STRINGP (car) || CONSP (car))
{
- register int limit = 5000;
- /* Limit is to protect against circular lists.
- The limit used to be 50, but if you use enough minor modes,
- minor-mode-alist will easily grow past 50. Circular lists
- are rather unlikely, so it's better for the limit to be
- "too large" rather than "too small". */
+ Lisp_Object halftail = elt;
+ int len = 0;
+
while (CONSP (elt)
- && --limit > 0
&& (precision <= 0 || n < precision))
{
n += display_mode_element (it, depth,
@@ -17769,6 +17765,12 @@
precision - n, XCAR (elt),
props, risky);
elt = XCDR (elt);
+ len++;
+ if ((len & 1) == 0)
+ halftail = XCDR (halftail);
+ /* Check for cycle. */
+ if (EQ (halftail, elt))
+ break;
}
}
}