1
0
mirror of https://git.savannah.gnu.org/git/emacs.git synced 2025-01-12 16:23:57 +00:00

Prevent locked-file errors in Rmail

* lisp/mail/rmail.el (rmail-get-new-mail-1): Lock file before
calling 'rmail-insert-inbox-text'.  Unlock if
'rmail-insert-inbox-text' doesn't modify buffer.
(rmail-insert-inbox-text): Remove lock-checking code.  (Bug#17706)
This commit is contained in:
Ken Olum 2016-05-28 13:46:22 +03:00 committed by Eli Zaretskii
parent 062757dca0
commit 549470fdf2

View File

@ -1818,9 +1818,21 @@ not be a new one). It returns non-nil if it got any new messages."
;; Read in the contents of the inbox files, renaming them as
;; necessary, and adding to the list of files to delete
;; eventually.
(if file-name
(rmail-insert-inbox-text files nil)
(setq delete-files (rmail-insert-inbox-text files t)))
(unwind-protect
(progn
;; Set modified now to lock the file, so that we don't
;; encounter locking problems later in the middle of
;; reading the mail.
(set-buffer-modified-p t)
(if file-name
(rmail-insert-inbox-text files nil)
(setq delete-files (rmail-insert-inbox-text files t))))
;; If there was no new mail, or we aborted before actually
;; trying to get any, mark buffer unmodified. Otherwise the
;; buffer is correctly marked modified and the file locked
;; until we save out the new mail.
(if (= (point-min) (point-max))
(set-buffer-modified-p nil)))
;; Scan the new text and convert each message to
;; Rmail/mbox format.
(goto-char (point-min))
@ -1969,11 +1981,6 @@ Value is the size of the newly read mail after conversion."
size))
(defun rmail-insert-inbox-text (files renamep)
;; Detect a locked file now, so that we avoid moving mail
;; out of the real inbox file. (That could scare people.)
(or (memq (file-locked-p buffer-file-name) '(nil t))
(error "RMAIL file %s is locked"
(file-name-nondirectory buffer-file-name)))
(let (file tofile delete-files popmail got-password password)
(while files
;; Handle remote mailbox names specially; don't expand as filenames