From 6fd96bd344e7c61a29ce9386d1d6ea69030eee53 Mon Sep 17 00:00:00 2001 From: fennecdjay Date: Wed, 13 Mar 2019 12:29:00 +0100 Subject: [PATCH] :art: Use longjmp in signal --- src/main.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) 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; -- 2.43.0