summary refs log tree commit diff
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
parent91fe0e20c7da2b706a1ac0e7b75235b6c1e6ed0a (diff)
downloadguix-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.
-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))))