summary refs log tree commit diff
diff options
context:
space:
mode:
authorCaleb Ristvedt <caleb.ristvedt@cune.org>2020-05-06 11:52:16 -0500
committerCaleb Ristvedt <caleb.ristvedt@cune.org>2020-05-07 05:56:01 -0500
commitb338c41c824c57d9de506404717ea7b3d2887f45 (patch)
treecd139d88f958904cfc09f4c2c0ccc48c6942ce79
parent37edbc91e34fb5658261e637e6ffccdb381e5271 (diff)
downloadguix-b338c41c824c57d9de506404717ea7b3d2887f45.tar.gz
nar: 'with-temporary-store-file' uses a single connection
Previously the 'with-store' form was entered every time a different temporary
file was tried.  This caused there to be as many simultaneous open connections
as there were attempts, and prevented the (loop ...) call from being a tail
call.  This change fixes that.

* guix/nar.scm (with-temporary-store-file): open connection once prior to
  entering the loop.
-rw-r--r--guix/nar.scm4
1 files changed, 2 insertions, 2 deletions
diff --git a/guix/nar.scm b/guix/nar.scm
index 0a6f59b09a..eff4becbce 100644
--- a/guix/nar.scm
+++ b/guix/nar.scm
@@ -138,8 +138,8 @@ held."
 (define-syntax-rule (with-temporary-store-file name body ...)
   "Evaluate BODY with NAME bound to the file name of a temporary store item
 protected from GC."
-  (let loop ((name (temporary-store-file)))
-    (with-store store
+  (with-store store
+    (let loop ((name (temporary-store-file)))
       ;; Add NAME to the current process' roots.  (Opening this connection to
       ;; the daemon allows us to reuse its code that deals with the
       ;; per-process roots file.)