From f341c2f18f33a37f83e70d4f4bfc9a39a55ac0a4 Mon Sep 17 00:00:00 2001 From: Oleh Krehel Date: Sat, 14 Nov 2015 11:17:53 +0100 Subject: [PATCH] avy.el (avy--find-visible-regions): Add bounds safety Re abo-abo/lispy#139 --- avy.el | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/avy.el b/avy.el index 82a20e4..f42cd42 100644 --- a/avy.el +++ b/avy.el @@ -567,16 +567,19 @@ Use OVERLAY-FN to visualize the decision overlay." (defun avy--find-visible-regions (rbeg rend) "Return a list of all visible regions between RBEG and REND." - (let (visibles beg) - (save-excursion - (save-restriction - (narrow-to-region rbeg rend) - (setq beg (goto-char (point-min))) - (while (not (= (point) (point-max))) - (goto-char (avy--next-invisible-point)) - (push (cons beg (point)) visibles) - (setq beg (goto-char (avy--next-visible-point)))) - (nreverse visibles))))) + (setq rbeg (max rbeg (point-min))) + (setq rend (min rend (point-max))) + (when (< rbeg rend) + (let (visibles beg) + (save-excursion + (save-restriction + (narrow-to-region rbeg rend) + (setq beg (goto-char (point-min))) + (while (not (= (point) (point-max))) + (goto-char (avy--next-invisible-point)) + (push (cons beg (point)) visibles) + (setq beg (goto-char (avy--next-visible-point)))) + (nreverse visibles)))))) (defun avy--regex-candidates (regex &optional beg end pred group) "Return all elements that match REGEX.