From 53b044c2f6f9e309037d5545374a7d257dbbb590 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Mon, 22 Sep 2014 18:49:49 +0200 Subject: [PATCH] Don't evaluate inside a "throw" Workaround for https://gcc.gnu.org/bugzilla/show_bug.cgi?id=41174. This caused hydra-eval-jobs to ignore SIGINT. --- src/libexpr/primops.cc | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/libexpr/primops.cc b/src/libexpr/primops.cc index a25bd8854..0892d5d1b 100644 --- a/src/libexpr/primops.cc +++ b/src/libexpr/primops.cc @@ -333,15 +333,16 @@ static void prim_genericClosure(EvalState & state, const Pos & pos, Value * * ar static void prim_abort(EvalState & state, const Pos & pos, Value * * args, Value & v) { PathSet context; - throw Abort(format("evaluation aborted with the following error message: ‘%1%’") % - state.coerceToString(pos, *args[0], context)); + string s = state.coerceToString(pos, *args[0], context); + throw Abort(format("evaluation aborted with the following error message: ‘%1%’") % s); } static void prim_throw(EvalState & state, const Pos & pos, Value * * args, Value & v) { PathSet context; - throw ThrownError(format("%1%") % state.coerceToString(pos, *args[0], context)); + string s = state.coerceToString(pos, *args[0], context); + throw ThrownError(s); }