]> code.delx.au - gnu-emacs/commitdiff
* lisp/emacs-lisp/package.el (package--with-response-buffer):
authorArtur Malabarba <bruce.connor.am@gmail.com>
Wed, 18 May 2016 20:58:56 +0000 (17:58 -0300)
committerArtur Malabarba <bruce.connor.am@gmail.com>
Wed, 18 May 2016 21:07:50 +0000 (18:07 -0300)
Fix some macro locals leaking into body.  (Bug#22440)

* test/automated/package-test.el (package-test-signed):
Manually check all possible values of `package-check-signature'.

lisp/emacs-lisp/package.el
test/automated/package-test.el

index 58973dfa920809e4896d1ebdd2534b1f32de699a..aa18c2d30bc0a7fe679aa6c153ca120a9ba19ce3 100644 (file)
@@ -1154,6 +1154,8 @@ errors signaled by ERROR-FORM or by BODY).
   (while (keywordp (car body))
     (setq body (cdr (cdr body))))
   (macroexp-let2* nil ((url-1 url)
+                       (url-sym (make-symbol "url"))
+                       (b-sym (make-symbol "b-sym"))
                        (noerror-1 noerror))
     `(cl-macrolet ((unless-error (body-2 &rest before-body)
                                  (let ((err (make-symbol "err")))
@@ -1165,23 +1167,26 @@ errors signaled by ERROR-FORM or by BODY).
                                                            `(signal (car ,err) (cdr ,err)))))
                                         ,@body-2)))))
        (if (string-match-p "\\`https?:" ,url-1)
-           (let* ((url (concat ,url-1 ,file))
-                  (callback (lambda (status)
-                              (let ((b (current-buffer)))
-                                (require 'url-handlers)
-                                (unless-error ,body
-                                              (when-let ((er (plist-get status :error)))
-                                                (error "Error retrieving: %s %S" url er))
-                                              (with-current-buffer b
-                                                (goto-char (point-min))
-                                                (unless (search-forward-regexp "^\r?\n\r?" nil 'noerror)
-                                                  (error "Error retrieving: %s %S" url "incomprehensible buffer")))
-                                              (url-insert-buffer-contents b url)
-                                              (kill-buffer b)
-                                              (goto-char (point-min)))))))
+           (let ((,url-sym (concat ,url-1 ,file)))
              (if ,async
-                 (unless-error nil (url-retrieve url callback nil 'silent))
-               (unless-error ,body (url-insert-file-contents url))))
+                 (unless-error nil
+                               (url-retrieve ,url-sym
+                                             (lambda (status)
+                                               (let ((,b-sym (current-buffer)))
+                                                 (require 'url-handlers)
+                                                 (unless-error ,body
+                                                               (when-let ((er (plist-get status :error)))
+                                                                 (error "Error retrieving: %s %S" ,url-sym er))
+                                                               (with-current-buffer ,b-sym
+                                                                 (goto-char (point-min))
+                                                                 (unless (search-forward-regexp "^\r?\n\r?" nil 'noerror)
+                                                                   (error "Error retrieving: %s %S" ,url-sym "incomprehensible buffer")))
+                                                               (url-insert-buffer-contents ,b-sym ,url-sym)
+                                                               (kill-buffer ,b-sym)
+                                                               (goto-char (point-min)))))
+                                             nil
+                                             'silent))
+               (unless-error ,body (url-insert-file-contents ,url-sym))))
          (unless-error ,body
                        (let ((url (expand-file-name ,file ,url-1)))
                          (unless (file-name-absolute-p url)
index 55806454741703cdf5b80bf7d98a1a5020a2b22c..c4c856f30315f19fd609bbdec43e6324da2afe04 100644 (file)
@@ -475,8 +475,15 @@ Must called from within a `tar-mode' buffer."
       (package-initialize)
       (package-import-keyring keyring)
       (package-refresh-contents)
-      (should (package-install 'signed-good))
-      (should-error (package-install 'signed-bad))
+      (let ((package-check-signature 'allow-unsigned))
+        (should (package-install 'signed-good))
+        (should-error (package-install 'signed-bad)))
+      (let ((package-check-signature t))
+        (should (package-install 'signed-good))
+        (should-error (package-install 'signed-bad)))
+      (let ((package-check-signature nil))
+        (should (package-install 'signed-good))
+        (should (package-install 'signed-bad)))
       ;; Check if the installed package status is updated.
       (let ((buf (package-list-packages)))
        (package-menu-refresh)