From 2005a7292c3991f2656cdc3a02b49f684283eb65 Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Tue, 13 Mar 2018 18:00:23 +0200 Subject: [PATCH] Avoid assertion violation under visual-order-cursor-movement * src/xdisp.c (Fmove_point_visually): Don't let point exceed the BEGV..ZV range. Signal Beginning of buffer error when there's a before-string at BEGV. (Bug#30787) --- src/xdisp.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/xdisp.c b/src/xdisp.c index 44eb1ebf059..d5528714270 100644 --- a/src/xdisp.c +++ b/src/xdisp.c @@ -22486,6 +22486,11 @@ Value is the new character position of point. */) new_pos += (row->reversed_p ? -dir : dir); else new_pos -= (row->reversed_p ? -dir : dir); + new_pos = clip_to_bounds (BEGV, new_pos, ZV); + /* If we didn't move, we've hit BEGV or ZV, so we + need to signal a suitable error. */ + if (new_pos == PT) + break; } else if (BUFFERP (g->object)) new_pos = g->charpos; -- 2.39.5