Synch to Gnus 200308270608.
authoryamaoka <yamaoka>
Wed, 27 Aug 2003 07:19:42 +0000 (07:19 +0000)
committeryamaoka <yamaoka>
Wed, 27 Aug 2003 07:19:42 +0000 (07:19 +0000)
lisp/ChangeLog
lisp/mm-decode.el

index ca9b909..886e7b6 100644 (file)
@@ -1,3 +1,11 @@
+2003-08-27  Simon Josefsson  <jas@extundo.com>
+
+       * 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
+       <davidc@debian.org>.
+
 2003-08-27  Jesper Harder  <harder@ifa.au.dk>
 
        * gnus-cache.el (gnus-cache-generate-active): Fix bug in
index b3e13fe..90701b6 100644 (file)
@@ -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)))))