From 230fafee5932e4233e4d66a84bd49f41b5067eb6 Mon Sep 17 00:00:00 2001 From: Christopher Baines Date: Fri, 28 May 2021 17:21:11 +0100 Subject: Use dyanmic-wind when changing the GC configuration These procedures actually increment/decrement a counter, so gc-enable might not enable garbage collection if gc-disable has been called twice in a row. dynamic-wind should ensure that gc-enable is always called after gc-disable, even if thunk raises an exception for example. --- guix-build-coordinator/utils.scm | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/guix-build-coordinator/utils.scm b/guix-build-coordinator/utils.scm index 9be4f4c..44a08c8 100644 --- a/guix-build-coordinator/utils.scm +++ b/guix-build-coordinator/utils.scm @@ -255,11 +255,10 @@ upcoming chunk." (define (with-gc-protection thunk) (monitor - (gc-disable) - (call-with-values thunk - (lambda vals - (gc-enable) - (apply values vals))))) + (dynamic-wind + gc-disable + thunk + gc-enable))) (define (make-gc-guard-port port) (define (%put-char c) -- cgit v1.2.3