summaryrefslogtreecommitdiff
path: root/guix/store.scm
diff options
context:
space:
mode:
Diffstat (limited to 'guix/store.scm')
-rw-r--r--guix/store.scm12
1 files changed, 7 insertions, 5 deletions
diff --git a/guix/store.scm b/guix/store.scm
index ca8c0e5ef8..1dd5c9545b 100644
--- a/guix/store.scm
+++ b/guix/store.scm
@@ -623,14 +623,16 @@ connection. Use with care."
(define (call-with-store proc)
"Call PROC with an open store connection."
(let ((store (open-connection)))
- (dynamic-wind
- (const #f)
+ (catch #t
(lambda ()
(parameterize ((current-store-protocol-version
(store-connection-version store)))
- (proc store)))
- (lambda ()
- (false-if-exception (close-connection store))))))
+ (let ((result (proc store)))
+ (close-connection store)
+ result)))
+ (lambda (key . args)
+ (close-connection store)
+ (apply throw key args)))))
(define-syntax-rule (with-store store exp ...)
"Bind STORE to an open connection to the store and evaluate EXPs;