From 851187f7bb1c465af329d75a7482de41d2c84bdc Mon Sep 17 00:00:00 2001 From: Yuichi Nishiwaki Date: Mon, 10 Mar 2014 01:12:19 +0900 Subject: [PATCH] use pic_try/catch in stdlib_load --- src/init.c | 23 ++++++++++------------- 1 file changed, 10 insertions(+), 13 deletions(-) diff --git a/src/init.c b/src/init.c index 3fde3d2a..251ea93d 100644 --- a/src/init.c +++ b/src/init.c @@ -33,26 +33,23 @@ void pic_load_stdlib(pic_state *pic) { static const char *filename = "piclib/built-in.scm"; - jmp_buf jmp, *prev_jmp = pic->jmp; - if (setjmp(jmp) == 0) { - pic->jmp = &jmp; + pic_try { + + /* load 'built-in.scm' */ + pic_load(pic, filename); + +#if DEBUG + puts("successfully loaded stdlib"); +#endif + } - else { + pic_catch { /* error! */ fputs("fatal error: failure in loading built-in.scm\n", stderr); fputs(pic_errmsg(pic), stderr); abort(); } - - /* load 'built-in.scm' */ - pic_load(pic, filename); - -#if DEBUG - puts("successfully loaded stdlib"); -#endif - - pic->jmp = prev_jmp; } #define PUSH_SYM(pic, lst, name) \