From 892c94f5974e6f7cce3f6d59a8a986334a41e1de Mon Sep 17 00:00:00 2001 From: yamaoka Date: Wed, 27 Aug 2003 07:19:42 +0000 Subject: [PATCH] Synch to Gnus 200308270608. --- lisp/ChangeLog | 8 ++++++++ lisp/mm-decode.el | 13 +++++++++++-- 2 files changed, 19 insertions(+), 2 deletions(-) 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))))) -- 1.7.10.4