]> Nishi Git Mirror - gwion.git/commitdiff
:art: Use longjmp in signal
authorfennecdjay <astor.jeremie@wanadoo.fr>
Wed, 13 Mar 2019 11:29:00 +0000 (12:29 +0100)
committerfennecdjay <astor.jeremie@wanadoo.fr>
Wed, 13 Mar 2019 11:29:00 +0000 (12:29 +0100)
src/main.c

index 80bc1165b74e8a6e281a569403f1fdaf6a3ab0f8..0e85f095c19be8a766f79b98c4733005e6c1e44f 100644 (file)
@@ -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;