From: yamaoka Date: Wed, 27 Aug 2003 07:19:42 +0000 (+0000) Subject: Synch to Gnus 200308270608. X-Git-Url: http://git.chise.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=892c94f5974e6f7cce3f6d59a8a986334a41e1de;p=elisp%2Fgnus.git- Synch to Gnus 200308270608. --- diff --git a/lisp/ChangeLog b/lisp/ChangeLog index ca9b909..886e7b6 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,11 @@ +2003-08-27 Simon Josefsson + + * mm-decode.el (mm-remove-part): Try to kill external displayers + cleanly first (if it refuses, C-g aborts loop and kill process + unconditionally). Also make sure process is dead before we remove + the files it may be using. Reported by David Coe + . + 2003-08-27 Jesper Harder * gnus-cache.el (gnus-cache-generate-active): Fix bug in diff --git a/lisp/mm-decode.el b/lisp/mm-decode.el index b3e13fe..90701b6 100644 --- a/lisp/mm-decode.el +++ b/lisp/mm-decode.el @@ -848,9 +848,18 @@ external if displayed external." (funcall object)) ;; Externally displayed part. ((consp object) + (condition-case () + (while (get-buffer-process (cdr object)) + (interrupt-process (get-buffer-process (cdr object))) + (message "Waiting for external displayer to die...") + (sit-for 1)) + (quit) + (error)) + (ignore-errors (and (cdr object) (kill-buffer (cdr object)))) + (message "Waiting for external displayer to die...done") (ignore-errors (delete-file (car object))) - (ignore-errors (delete-directory (file-name-directory (car object)))) - (ignore-errors (and (cdr object) (kill-buffer (cdr object))))) + (ignore-errors (delete-directory (file-name-directory + (car object))))) ((bufferp object) (when (buffer-live-p object) (kill-buffer object)))))