diff options
| author | Lars Magne Ingebrigtsen <larsi@gnus.org> | 2012-03-25 15:38:22 +0200 |
|---|---|---|
| committer | Lars Magne Ingebrigtsen <larsi@gnus.org> | 2012-03-25 15:38:22 +0200 |
| commit | e0fe1d55893865df47efceb68551c245f12ceda3 (patch) | |
| tree | fbe783a0bf64bff76f5d54c3df9f6ab40ca50f34 | |
| parent | dd470960273e61040446549c2f6c549c0fdb483a (diff) | |
| download | emacs-e0fe1d55893865df47efceb68551c245f12ceda3.tar.gz | |
Fix race condition in url-queue when doing the callback
* url-queue.el (url-queue-kill-job): Check whether the buffer has
been killed asynchronously before selecting it.
| -rw-r--r-- | lisp/url/ChangeLog | 5 | ||||
| -rw-r--r-- | lisp/url/url-queue.el | 3 |
2 files changed, 7 insertions, 1 deletions
diff --git a/lisp/url/ChangeLog b/lisp/url/ChangeLog index ff6a6e6f805..d6e25188c69 100644 --- a/lisp/url/ChangeLog +++ b/lisp/url/ChangeLog @@ -1,3 +1,8 @@ +2012-03-25 Lars Magne Ingebrigtsen <larsi@gnus.org> + + * url-queue.el (url-queue-kill-job): Check whether the buffer has + been killed asynchronously before selecting it. + 2012-03-14 Lars Magne Ingebrigtsen <larsi@gnus.org> * url-queue.el (url-queue-kill-job): Make sure that the callback diff --git a/lisp/url/url-queue.el b/lisp/url/url-queue.el index 46124717fed..917c787df29 100644 --- a/lisp/url/url-queue.el +++ b/lisp/url/url-queue.el @@ -160,7 +160,8 @@ The variable `url-queue-timeout' sets a timeout." ;; Call the callback with an error message to ensure that the caller ;; is notified that the job has failed. (with-current-buffer - (if (bufferp (url-queue-buffer job)) + (if (and (bufferp (url-queue-buffer job)) + (buffer-live-p (url-queue-buffer job))) ;; Use the (partially filled) process buffer it it exists. (url-queue-buffer job) ;; If not, just create a new buffer, which will probably be |
