Index: src/output.d ================================================================== --- src/output.d +++ src/output.d @@ -52,11 +52,11 @@ bool flushed; string s_log; long[] s_score_log; - void flush() + void flush() nothrow { if(flushed) return; Tuple!(long, int, immutable(char)*) cand; @@ -79,9 +79,9 @@ void setup_sigint_handling() { assert(g_output is null); g_output = this; - extern(C) static void catch_sigint(int) { g_output.flush(); application_exit(); } + extern(C) nothrow @system static void catch_sigint(int) { g_output.flush(); application_exit(); } core.stdc.signal.signal(SIGINT, &catch_sigint); } } Index: src/solver.d ================================================================== --- src/solver.d +++ src/solver.d @@ -85,11 +85,11 @@ { alias Tuple!(T,int) t; t[] cur, next; - void push(T v, int p) { (cur.empty ? cur : next) ~= tuple(v,p); } + void push(T v, int p) { if(cur.empty) cur ~= tuple(v,p); else next ~= tuple(v,p); } bool empty() { return cur.empty; } t pop() { t v = cur[0]; cur = cur[1..$]; if(cur.empty) { cur = next; next = null; } return v; Index: src/util.d ================================================================== --- src/util.d +++ src/util.d @@ -20,11 +20,11 @@ if(e == v) ++cnt; return cnt; } -void application_exit() +void application_exit() nothrow { std.c.stdlib.exit(0); } template DeriveCreate()