summaryrefslogtreecommitdiff
path: root/guix
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2013-05-14 23:52:13 +0200
committerLudovic Courtès <ludo@gnu.org>2013-05-14 23:52:13 +0200
commit90a1e4b3033e4a17a4b05f51f046a0eaa697c95b (patch)
tree246ef1f14386c646c85719e5d0f5f913823b52f9 /guix
parent91fe0e20c7da2b706a1ac0e7b75235b6c1e6ed0a (diff)
downloadgnu-guix-90a1e4b3033e4a17a4b05f51f046a0eaa697c95b.tar
gnu-guix-90a1e4b3033e4a17a4b05f51f046a0eaa697c95b.tar.gz
package: Always clear the SIGINT handler.
* guix/scripts/package.scm (call-with-sigint-handler): Wrap THUNK in `dynamic-wind' so that the SIGINT handler is always cleared.
Diffstat (limited to 'guix')
-rw-r--r--guix/scripts/package.scm5
1 files changed, 4 insertions, 1 deletions
diff --git a/guix/scripts/package.scm b/guix/scripts/package.scm
index 094d348ac9..aeeeab307c 100644
--- a/guix/scripts/package.scm
+++ b/guix/scripts/package.scm
@@ -295,7 +295,10 @@ return its return value."
(lambda (signum)
(sigaction SIGINT SIG_DFL)
(abort-to-prompt %sigint-prompt signum)))
- (thunk))
+ (dynamic-wind
+ (const #t)
+ thunk
+ (cut sigaction SIGINT SIG_DFL)))
(lambda (k signum)
(handler signum))))