From: fennecdjay Date: Wed, 13 Mar 2019 11:29:00 +0000 (+0100) Subject: :art: Use longjmp in signal X-Git-Tag: nightly~2738 X-Git-Url: http://10.11.0.4:5575/?a=commitdiff_plain;h=6fd96bd344e7c61a29ce9386d1d6ea69030eee53;p=gwion.git :art: Use longjmp in signal --- diff --git a/src/main.c b/src/main.c index 80bc1165..0e85f095 100644 --- a/src/main.c +++ b/src/main.c @@ -7,18 +7,21 @@ #include "gwion.h" #include "arg.h" +static jmp_buf jmp; static struct Gwion_ gwion; static void sig(int unused __attribute__((unused))) { gwion.vm->bbq->is_running = 0; + longjmp(jmp, 1); } + int main(int argc, char** argv) { Arg arg = { .argc=argc, .argv=argv, .loop=-1 }; signal(SIGINT, sig); signal(SIGTERM, sig); const m_bool ini = gwion_ini(&gwion, &arg); arg_release(&arg); - if(ini > 0) + if(setjmp(jmp) == 0 && ini > 0) gwion_run(&gwion); gwion_end(&gwion); return EXIT_SUCCESS;