]> git.eshelyaron.com Git - emacs.git/commitdiff
Forestall "Selected deleted buffer" in url-http-generic-filter
authordickmao <none>
Mon, 9 Aug 2021 13:46:00 +0000 (15:46 +0200)
committerLars Ingebrigtsen <larsi@gnus.org>
Mon, 9 Aug 2021 13:46:00 +0000 (15:46 +0200)
* lisp/url/url-http.el (url-http-generic-filter): Check that
corresponding buffer is still live before using it (bug#49928).

lisp/url/url-http.el

index e3c178630ae8ba96efae09e02b8f22c075a2fad9..ba13a17a8fcd50a7920357103cd31357571c3da1 100644 (file)
@@ -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