From: fennecdjay Date: Wed, 10 Apr 2019 16:04:59 +0000 (+0200) Subject: :art: Various Improvments X-Git-Tag: nightly~2536 X-Git-Url: http://10.11.0.4:5575/?a=commitdiff_plain;h=c6a46803c14e8897b39556a4e13427f1badc9c45;p=gwion.git :art: Various Improvments --- diff --git a/ast b/ast index b032c950..c32bbfb8 160000 --- a/ast +++ b/ast @@ -1 +1 @@ -Subproject commit b032c9500ff15c8b20a01f3abcb3e1751d4b465f +Subproject commit c32bbfb803ba875ce098b18f5f4e09f97040a5f2 diff --git a/src/arg.c b/src/arg.c index ed3c1542..cff9b59c 100644 --- a/src/arg.c +++ b/src/arg.c @@ -15,16 +15,28 @@ ANN static inline void config_end(const Vector config) { } } +ANN static m_str plug_dir(void) { + const m_str home = getenv("HOME"); + const size_t sz = strlen(home); + const m_str pdir = "/.gwplug"; + m_str plug_dir = (m_str)xmalloc(sz + strlen(pdir) + 1); + strcpy(plug_dir, home); + strcpy(plug_dir + sz, pdir); + return plug_dir; +} + ANN static void arg_init(Arg* arg) { vector_init(&arg->add); vector_init(&arg->lib); vector_init(&arg->mod); vector_init(&arg->config); - vector_add(&arg->lib, (vtype)GWPLUG_DIR); +// vector_add(&arg->lib, (vtype)GWPLUG_DIR); + vector_add(&arg->lib, (vtype)plug_dir()); } ANN void arg_release(Arg* arg) { vector_release(&arg->add); + xfree((m_str)vector_front(&arg->lib)); vector_release(&arg->lib); vector_release(&arg->mod); config_end(&arg->config); diff --git a/src/main.c b/src/main.c index 7201af6f..4bae7889 100644 --- a/src/main.c +++ b/src/main.c @@ -12,12 +12,17 @@ #include #endif -static jmp_buf jmp; -static struct Gwion_ gwion; +//static jmp_buf jmp; +//static struct Gwion_ gwion; static void sig(int unused NUSED) { - gwion.vm->bbq->is_running = 0; - longjmp(jmp, 1); +// gwion.vm->bbq->is_running = 0; +// longjmp(jmp, 1); +#ifdef BUILD_ON_WINDOWS + exit(EXIT_FAILURE); +#else + pthread_exit(NULL); +#endif } int main(int argc, char** argv) { @@ -26,10 +31,12 @@ int main(int argc, char** argv) { Arg arg = { .argc=argc, .argv=argv, .loop=-1 }; signal(SIGINT, sig); signal(SIGTERM, sig); + struct Gwion_ gwion = {}; const m_bool ini = gwion_ini(&gwion, &arg); arg_release(&arg); - if(setjmp(jmp) == 0 && ini > 0) + if(/*setjmp(jmp) == 0 && */ini > 0) gwion_run(&gwion); gwion_end(&gwion); + THREAD_RETURN(EXIT_SUCCESS); return EXIT_SUCCESS; } diff --git a/tests/error/array_assign_exp.gw b/tests/error/array_assign_exp.gw new file mode 100644 index 00000000..15365ef9 --- /dev/null +++ b/tests/error/array_assign_exp.gw @@ -0,0 +1,2 @@ +// [contains] do not provide array +[1,2,3,4] @=> int loop[1]; diff --git a/tests/error/array_mutable.gw b/tests/error/array_mutable.gw new file mode 100644 index 00000000..744b1936 --- /dev/null +++ b/tests/error/array_mutable.gw @@ -0,0 +1,2 @@ +// [contains] non-mutable +[1,2,3,4] @=> [1][1];