From e4e5d1e10453aa2731df296156379850aa503490 Mon Sep 17 00:00:00 2001 From: Jonas Bernoulli Date: Thu, 20 Aug 2015 17:06:54 +0200 Subject: blame: abort if the file-visiting buffer was killed Fixes #2188. --- lisp/magit-blame.el | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/lisp/magit-blame.el b/lisp/magit-blame.el index 439ccc6..d7b6cdd 100644 --- a/lisp/magit-blame.el +++ b/lisp/magit-blame.el @@ -248,6 +248,7 @@ only arguments available from `magit-blame-popup' should be used. `(lambda (process event) (when (memq (process-status process) '(exit signal)) (magit-process-sentinel process event) + (magit-blame-assert-buffer process) (with-current-buffer (process-get process 'command-buf) (when magit-blame-mode (let ((magit-process-popup-time -1) @@ -267,6 +268,7 @@ only arguments available from `magit-blame-popup' should be used. (magit-process-sentinel process event) (if (eq status 'exit) (message "Blaming...done") + (magit-blame-assert-buffer process) (with-current-buffer (process-get process 'command-buf) (magit-blame-mode -1)) (message "Blaming...failed"))))) @@ -281,6 +283,7 @@ This is intended for debugging purposes.") (--when-let (process-get process 'partial-line) (setq string (concat it string)) (setf (process-get process 'partial-line) nil)) + (magit-blame-assert-buffer process) (with-current-buffer (process-get process 'command-buf) (when magit-blame-mode (let ((chunk (process-get process 'chunk)) @@ -325,6 +328,11 @@ This is intended for debugging purposes.") (match-string 2 line)))) (process-put process 'chunk chunk)))))) +(defun magit-blame-assert-buffer (process) + (unless (buffer-live-p (process-get process 'command-buf)) + (kill-process process) + (user-error "Buffer being blamed has been killed"))) + (defun magit-blame-make-overlay (chunk) (let ((ov (save-excursion (save-restriction -- cgit v1.0