Subject: Re: bug#13610: 24.3.50; vc-next-action hang forever

From: Thierry Volpiatto <[email-masked]>
Date: Mon, 04 Feb 2013 08:07:34 +0100

Thierry Volpiatto <[email-masked]> writes:

> Thierry Volpiatto <[email-masked]> writes:
>
>> Hi,
>> To reproduce:
>> emacs -Q
>> create a new file and edit it (a script shell for me)
>> save it and register it under RCS.
>> C-x v v
>> emacs hang forever.
>
> More exactly, this is this loop (which is not in 24.2.92) which 
> turn forever because it assume buffer have been modified before setq'ing
> files to nil and stop the loop.
>
>     ;; If a buffer has unsaved changes, a checkout would discard those
>     ;; changes, so treat the buffer as having unlocked changes.
>     (when (and (not (eq model 'implicit)) (eq state 'up-to-date))
>       (let ((files files))
> 	(while files
> 	  (let ((buffer (get-file-buffer (car files))))
> 	    (and buffer
> 		 (buffer-modified-p buffer)
> 		 (setq state 'unlocked-changes
> 		       files nil))))))

--8<---------------cut here---------------start------------->8---
diff --git a/lisp/vc/vc.el b/lisp/vc/vc.el
index 9b8b949..18147cd 100644
--- a/lisp/vc/vc.el
+++ b/lisp/vc/vc.el
@@ -1084,8 +1084,8 @@ For old-style locking-based version control systems, like RCS:
 	  (let ((buffer (get-file-buffer (car files))))
 	    (and buffer
 		 (buffer-modified-p buffer)
-		 (setq state 'unlocked-changes
-		       files nil))))))
+		 (setq state 'unlocked-changes)))
+          (setq files (cdr files)))))
 
     ;; Do the right thing
     (cond
--8<---------------cut here---------------end--------------->8---

-- 
Thierry
Get my Gnupg key:
gpg --keyserver pgp.mit.edu --recv-keys 59F29997