>From 17eab01494e92e4f9582c56e73ae49278158b016 Mon Sep 17 00:00:00 2001 From: Jonathan Kyle Mitchell Date: Tue, 3 Jul 2018 21:44:21 -0500 Subject: [PATCH] Verify plist is a plist before use Do not blindly use a plist that came from Lisp to set text properties. This causes Fset_text_properties to go into an infinite loop during redisplay when it catches the error in the global error handler (bug#32038). * src/xdisp.c (display_mode_element): --- src/xdisp.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/xdisp.c b/src/xdisp.c index 9b4febdd61..5f52a5ba6c 100644 --- a/src/xdisp.c +++ b/src/xdisp.c @@ -23610,8 +23610,12 @@ display_mode_element (struct it *it, int depth, int field_width, int precision, = Fdelq (aelt, mode_line_proptrans_alist); elt = Fcopy_sequence (elt); - Fset_text_properties (make_number (0), Flength (elt), - props, elt); + if (EQ (Fmod (Flength (props), make_number (2)), + make_number (0))) + { + Fset_text_properties (make_number (0), Flength (elt), + props, elt); + } /* Add this item to mode_line_proptrans_alist. */ mode_line_proptrans_alist = Fcons (Fcons (elt, props), -- 2.17.1