From c2469c50e80f4a18448e6f5f45e960cf00944822 Mon Sep 17 00:00:00 2001 From: Stefan Monnier Date: Tue, 28 Feb 2017 14:00:17 -0500 Subject: [PATCH] * src/xdisp.c (overlay_arrows_changed_p): Fix return value and doc (update_overlay_arrows): Skip non-markers. --- src/xdisp.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/xdisp.c b/src/xdisp.c index 4e87001abf7..1f8878408be 100644 --- a/src/xdisp.c +++ b/src/xdisp.c @@ -13338,12 +13338,15 @@ overlay_arrow_in_current_buffer_p (void) /* Return true if any overlay_arrows have moved or overlay-arrow-string - has changed. */ + has changed. + If SET_REDISPLAY is true, additionally, set the `redisplay' bit in those + buffers that are affected. */ static bool overlay_arrows_changed_p (bool set_redisplay) { Lisp_Object vlist; + bool changed = false; for (vlist = Voverlay_arrow_variable_list; CONSP (vlist); @@ -13370,12 +13373,13 @@ overlay_arrows_changed_p (bool set_redisplay) { if (buf) bset_redisplay (buf); + changed = true; } else return true; } } - return false; + return changed; } /* Mark overlay arrows to be updated on next redisplay. */ @@ -13397,6 +13401,8 @@ update_overlay_arrows (int up_to_date) if (up_to_date > 0) { Lisp_Object val = find_symbol_value (var); + if (!MARKERP (val)) + continue; Fput (var, Qlast_arrow_position, COERCE_MARKER (val)); Fput (var, Qlast_arrow_string, -- 2.11.4.GIT