From b69863f29d2252585cfcc29add96d23deae7167d Mon Sep 17 00:00:00 2001
From: "Richard M. Stallman" <rms@gnu.org>
Date: Fri, 12 Jan 1996 21:23:05 +0000
Subject: (forward-page): Simplify how we avoid getting stuck when moving
 backwards.

---
 lisp/textmodes/page.el | 22 ++++++++++------------
 1 file changed, 10 insertions(+), 12 deletions(-)

(limited to 'lisp/textmodes/page.el')

diff --git a/lisp/textmodes/page.el b/lisp/textmodes/page.el
index d84d7f5a07b..c110ca842ed 100644
--- a/lisp/textmodes/page.el
+++ b/lisp/textmodes/page.el
@@ -42,19 +42,17 @@ A page boundary is any line whose beginning matches the regexp
       (goto-char (point-max)))
     (setq count (1- count)))
   (while (and (< count 0) (not (bobp)))
+    ;; In case the page-delimiter matches the null string,
+    ;; don't find a match without moving.
+    (and (save-excursion (re-search-backward page-delimiter nil t))
+	 (= (match-end 0) (point))
+	 (goto-char (match-beginning 0)))
     (forward-char -1)
-    (let (result (end (point)))
-      ;; If we find a match that ends where we started searching,
-      ;; look for another one.
-      (while (and (setq result (re-search-backward page-delimiter nil t))
-		  (= (match-end 0) end))
-	;; Just search again.
-	)
-      (if result
-	  ;; We found one--move to the end of it.
-	  (goto-char (match-end 0))
-	;; We found nothing--go to beg of buffer.
-	(goto-char (point-min))))
+    (if (re-search-backward page-delimiter nil t)
+	;; We found one--move to the end of it.
+	(goto-char (match-end 0))
+      ;; We found nothing--go to beg of buffer.
+      (goto-char (point-min)))
     (setq count (1+ count))))
 
 (defun backward-page (&optional count)
-- 
cgit v1.2.1