aboutsummaryrefslogtreecommitdiff
path: root/src/data.lisp
diff options
context:
space:
mode:
authorSean Whitton <spwhitton@spwhitton.name>2021-02-23 13:31:45 -0700
committerSean Whitton <spwhitton@spwhitton.name>2021-02-23 13:31:45 -0700
commite4c60eb5a55ea6d1f44338a849abcf1566f01e8d (patch)
tree427c6324bc9da9c52b501ecf84cd1896ac6645bb /src/data.lisp
parent37f68da3c036de3a483882dbbe8fd2c7dd7e8ced (diff)
downloadconsfigurator-e4c60eb5a55ea6d1f44338a849abcf1566f01e8d.tar.gz
fix QUERY-DATA-SOURCES
We must close over the value, not the variable. Signed-off-by: Sean Whitton <spwhitton@spwhitton.name>
Diffstat (limited to 'src/data.lisp')
-rw-r--r--src/data.lisp16
1 files changed, 9 insertions, 7 deletions
diff --git a/src/data.lisp b/src/data.lisp
index 8a6a210..6178320 100644
--- a/src/data.lisp
+++ b/src/data.lisp
@@ -173,13 +173,15 @@ This function is called by property :APPLY and :UNAPPLY subroutines."
(read-file-string (data-file data)))
(defun query-data-sources (iden1 iden2)
- (car (sort (loop for (ver . get) in *data-sources*
- for version = (funcall ver iden1 iden2)
- when version collect (cons version
- (lambda ()
- (funcall get iden1 iden2))))
- (lambda (x y)
- (version> (car x) (car y))))))
+ (flet ((make-thunk (v iden1 iden2)
+ (lambda ()
+ (funcall v iden1 iden2))))
+ (car (sort (loop for (ver . get) in *data-sources*
+ for version = (funcall ver iden1 iden2)
+ when version
+ collect (cons version (make-thunk get iden1 iden2)))
+ (lambda (x y)
+ (version> (car x) (car y)))))))
;; called by implementations of ESTABLISH-CONNECTION which start up remote
;; Lisp images