branch: externals/plz-media-type
commit 9f5a4cbbebc9779ee2cfd3e58c53a30ff79d74e2
Author: Leo Gaskin <leo.gas...@le0.gs>
Commit: r0man <ro...@burningswell.com>

    Fix plz buffer killing edge case
---
 plz-media-type.el | 31 +++++++++++++++----------------
 1 file changed, 15 insertions(+), 16 deletions(-)

diff --git a/plz-media-type.el b/plz-media-type.el
index 9b6b92ec36..2bd2afc43d 100644
--- a/plz-media-type.el
+++ b/plz-media-type.el
@@ -699,15 +699,14 @@ not.
   ;; FIXME(v0.8): Remove the note about error changes from the docstring.
   ;; FIXME(v0.8): Update error signals in docstring.
   (declare (indent defun))
+  (when (and plz-media-type-debug-p plz-media-type-debug-erase-buffer-p)
+    (with-current-buffer (get-buffer-create 
plz-media-type-debug-response-buffer)
+      (erase-buffer)))
   (if-let (media-types (pcase as
                          (`(media-types ,media-types)
                           media-types)))
-      (let ((buffer))
-        (when (and plz-media-type-debug-p plz-media-type-debug-erase-buffer-p)
-          (with-current-buffer (get-buffer-create 
plz-media-type-debug-response-buffer)
-            (erase-buffer)))
-        (condition-case error
-            (let* ((plz-curl-default-args (cons "--no-buffer" 
plz-curl-default-args))
+      (condition-case error
+          (letrec ((plz-curl-default-args (cons "--no-buffer" 
plz-curl-default-args))
                    (result (plz method url
                              :as 'buffer
                              :body body
@@ -715,7 +714,6 @@ not.
                              :connect-timeout connect-timeout
                              :decode decode
                              :else (lambda (error)
-                                     (setq buffer (current-buffer))
                                      (when (or (functionp else) (symbolp else))
                                        (funcall else (plz-media-type-else
                                                       plz-media-type--current
@@ -734,20 +732,21 @@ not.
                              :then (if (symbolp then)
                                        then
                                      (lambda (_)
-                                       (setq buffer (current-buffer))
                                        (when (or (functionp then) (symbolp 
then))
                                          (funcall then (plz-media-type-then
                                                         plz-media-type--current
-                                                        
plz-media-type--response))))))))
-              (cond ((bufferp result)
-                     (plz-media-type--handle-sync-response result))
-                    ((processp result)
-                     result)
-                    (t (user-error "Unexpected response: %s" result))))
-          ;; TODO: How to kill the buffer for sync requests that raise an 
error?
-          (plz-error (plz-media-type--handle-sync-error error media-types))))
+                                                        
plz-media-type--response)))))))
+                   (buffer (if (processp result) (process-buffer result) 
result)))
+            (cond ((bufferp result)
+                   (plz-media-type--handle-sync-response result))
+                  ((processp result)
+                   result)
+                  (t (user-error "Unexpected response: %s" result))))
+        ;; TODO: How to kill the buffer for sync requests that raise an error?
+        (plz-error (plz-media-type--handle-sync-error error media-types)))
     (apply #'plz (append (list method url) rest))))
 
+
 ;;;; Footer
 
 (provide 'plz-media-type)

Reply via email to