summaryrefslogtreecommitdiff
path: root/lisp/url/url-http.el
diff options
context:
space:
mode:
authordickmao <none>2021-08-09 15:46:00 +0200
committerLars Ingebrigtsen <larsi@gnus.org>2021-08-09 15:46:00 +0200
commitb7d3c1e57743df464cd7c3ee43493fbbd2ae8705 (patch)
treee0a31e1b0249c1cbe4666981e5a7e09bf73471c4 /lisp/url/url-http.el
parent89d02841ab8af0a56b6c7e89790109bf8f67c10e (diff)
downloademacs-b7d3c1e57743df464cd7c3ee43493fbbd2ae8705.tar.gz
emacs-b7d3c1e57743df464cd7c3ee43493fbbd2ae8705.tar.bz2
emacs-b7d3c1e57743df464cd7c3ee43493fbbd2ae8705.zip
Forestall "Selected deleted buffer" in url-http-generic-filter
* lisp/url/url-http.el (url-http-generic-filter): Check that corresponding buffer is still live before using it (bug#49928).
Diffstat (limited to 'lisp/url/url-http.el')
-rw-r--r--lisp/url/url-http.el23
1 files changed, 12 insertions, 11 deletions
diff --git a/lisp/url/url-http.el b/lisp/url/url-http.el
index e3c178630ae..ba13a17a8fc 100644
--- a/lisp/url/url-http.el
+++ b/lisp/url/url-http.el
@@ -1494,17 +1494,18 @@ The return value of this function is the retrieval buffer."
;; Sometimes we get a zero-length data chunk after the process has
;; been changed to 'free', which means it has no buffer associated
;; with it. Do nothing if there is no buffer, or 0 length data.
- (and (process-buffer proc)
- (/= (length data) 0)
- (with-current-buffer (process-buffer proc)
- (url-http-debug "Calling after change function `%s' for `%S'" url-http-after-change-function proc)
- (funcall url-http-after-change-function
- (point-max)
- (progn
- (goto-char (point-max))
- (insert data)
- (point-max))
- (length data)))))
+ (let ((b (process-buffer proc)))
+ (when (and (buffer-live-p b) (not (zerop (length data))))
+ (with-current-buffer b
+ (url-http-debug "Calling after change function `%s' for `%S'"
+ url-http-after-change-function proc)
+ (funcall url-http-after-change-function
+ (point-max)
+ (progn
+ (goto-char (point-max))
+ (insert data)
+ (point-max))
+ (length data))))))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; file-name-handler stuff from here on out