emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] master b32bb3f: (package--with-work-buffer-async): Protect


From: Artur Malabarba
Subject: [Emacs-diffs] master b32bb3f: (package--with-work-buffer-async): Protect macro arguments.
Date: Sat, 04 Apr 2015 19:47:21 +0000

branch: master
commit b32bb3f2f6ae6b76d9cc74dbace2745ee119eddb
Author: Artur Malabarba <address@hidden>
Commit: Artur Malabarba <address@hidden>

    (package--with-work-buffer-async): Protect macro arguments.
---
 lisp/ChangeLog             |    1 +
 lisp/emacs-lisp/package.el |   38 +++++++++++++++++++++-----------------
 2 files changed, 22 insertions(+), 17 deletions(-)

diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index 9b2b312..11abda5 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -3,6 +3,7 @@
        * emacs-lisp/package.el (package--download-and-read-archives): Add
        `package-archives' to `package--downloads-in-progress' instead of
        overwriting it.
+       (package--with-work-buffer-async): Protect macro arguments.
 
 2015-04-04  Michael Albinus  <address@hidden>
 
diff --git a/lisp/emacs-lisp/package.el b/lisp/emacs-lisp/package.el
index 3f77840..32a3e01 100644
--- a/lisp/emacs-lisp/package.el
+++ b/lisp/emacs-lisp/package.el
@@ -1090,23 +1090,27 @@ function, call it with no arguments (instead of 
executing BODY),
 otherwise propagate the error.  For description of the other
 arguments see `package--with-work-buffer'."
   (declare (indent 3) (debug t))
-  `(if (or (not ,async)
-           (not (string-match-p "\\`https?:" ,location)))
-       (package--with-work-buffer ,location ,file ,@body)
-     (url-retrieve (concat ,location ,file)
-                   (lambda (status)
-                     (if (eq (car status) :error)
-                         (if (functionp ,async)
-                             (funcall ,async)
-                           (signal (cdar status) (cddr status)))
-                       (goto-char (point-min))
-                       (unless (search-forward "\n\n" nil 'noerror)
-                         (error "Invalid url response"))
-                       (delete-region (point-min) (point))
-                       ,@body)
-                     (kill-buffer (current-buffer)))
-                   nil
-                   'silent)))
+  (macroexp-let2* macroexp-copyable-p
+      ((async-1 async)
+       (file-1 file)
+       (location-1 location))
+    `(if (or (not ,async-1)
+             (not (string-match-p "\\`https?:" ,location-1)))
+         (package--with-work-buffer ,location-1 ,file-1 ,@body)
+       (url-retrieve (concat ,location-1 ,file-1)
+                     (lambda (status)
+                       (if (eq (car status) :error)
+                           (if (functionp ,async-1)
+                               (funcall ,async-1)
+                             (signal (cdar status) (cddr status)))
+                         (goto-char (point-min))
+                         (unless (search-forward "\n\n" nil 'noerror)
+                           (error "Invalid url response"))
+                         (delete-region (point-min) (point))
+                         ,@body)
+                       (kill-buffer (current-buffer)))
+                     nil
+                     'silent))))
 
 (defun package--check-signature-content (content string &optional sig-file)
   "Check signature CONTENT against STRING.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]