emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] master 9685774: Fix infinite loop in vc-dir-mark-unmark


From: Charles A. Roelli
Subject: [Emacs-diffs] master 9685774: Fix infinite loop in vc-dir-mark-unmark
Date: Mon, 18 Dec 2017 14:52:59 -0500 (EST)

branch: master
commit 9685774e38dc6f5670c8e57dc9f49335f4f738b6
Author: Charles A. Roelli <address@hidden>
Commit: Charles A. Roelli <address@hidden>

    Fix infinite loop in vc-dir-mark-unmark
    
    * lisp/vc/vc-dir.el (vc-dir-mark-unmark): Prevent from getting
    stuck on the same line in an infinite loop.  (Bug#24017)
---
 lisp/vc/vc-dir.el | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/lisp/vc/vc-dir.el b/lisp/vc/vc-dir.el
index 41c44e2..52c7d3e 100644
--- a/lisp/vc/vc-dir.el
+++ b/lisp/vc/vc-dir.el
@@ -554,11 +554,15 @@ If a prefix argument is given, move by that many lines."
 
 (defun vc-dir-mark-unmark (mark-unmark-function)
   (if (use-region-p)
-      (let (;; (firstl (line-number-at-pos (region-beginning)))
+      (let ((processed-line nil)
            (lastl (line-number-at-pos (region-end))))
        (save-excursion
          (goto-char (region-beginning))
-         (while (<= (line-number-at-pos) lastl)
+         (while (and (<= (line-number-at-pos) lastl)
+                      ;; We make sure to not get stuck processing the
+                      ;; same line in an infinite loop.
+                     (not (eq processed-line (line-number-at-pos))))
+           (setq processed-line (line-number-at-pos))
            (condition-case nil
                (funcall mark-unmark-function)
              ;; `vc-dir-mark-file' signals an error if we try marking



reply via email to

[Prev in Thread] Current Thread [Next in Thread]