]> code.delx.au - gnu-emacs/commitdiff
* lisp/emacs-lisp/package.el (package--with-work-buffer-async):
authorArtur Malabarba <bruce.connor.am@gmail.com>
Fri, 17 Jul 2015 22:00:24 +0000 (23:00 +0100)
committerArtur Malabarba <bruce.connor.am@gmail.com>
Fri, 17 Jul 2015 22:42:16 +0000 (23:42 +0100)
Fix error handling.

lisp/emacs-lisp/package.el

index c256923ca2101402c421baef50857fd7eec5f5db..fc5ef0b62c0e22e715026a88a147913ea0ea7218 100644 (file)
@@ -1136,26 +1136,26 @@ For a description of the other arguments see
        ;; This `condition-case' is to catch connection errors.
        (condition-case error-signal
            (url-retrieve (concat ,location-1 ,file-1)
+                         ;; This is to catch execution errors.
                          (lambda (status)
-                           (if-let ((er (plist-get status :error)))
-                               (when (if (functionp ,async-1)
-                                         (funcall ,async-1)
-                                       t)
-                                 (message "Error contacting: %s" (concat ,location-1 ,file-1))
-                                 (signal (car er) (cdr er)))
-                             (goto-char (point-min))
-                             (unless (search-forward "\n\n" nil 'noerror)
-                               (error "Invalid url response in buffer %s"
-                                 (current-buffer)))
-                             (delete-region (point-min) (point))
-                             ,@body)
-                           (kill-buffer (current-buffer)))
+                           (condition-case error-signal
+                               (progn
+                                 (when-let ((er (plist-get status :error)))
+                                   (error "Error retrieving: %s %S" (concat ,location-1 ,file-1) er))
+                                 (goto-char (point-min))
+                                 (unless (search-forward "\n\n" nil 'noerror)
+                                   (error "Invalid url response in buffer %s"
+                                          (current-buffer)))
+                                 (delete-region (point-min) (point))
+                                 ,@body
+                                 (kill-buffer (current-buffer)))
+                             (error (when (if (functionp ,async-1) (funcall ,async-1) t)
+                                      (signal (car error-signal) (cdr error-signal))))))
                          nil
                          'silent)
-         (error (when (functionp ,async-1)
-                  (funcall ,async-1))
-           (message "Error contacting: %s" (concat ,location-1 ,file-1))
-           (signal (car error-signal) (cdr error-signal)))))))
+         (error (when (if (functionp ,async-1) (funcall ,async-1) t)
+                  (message "Error contacting: %s" (concat ,location-1 ,file-1))
+                  (signal (car error-signal) (cdr error-signal))))))))
 
 (defun package--check-signature-content (content string &optional sig-file)
   "Check signature CONTENT against STRING.