use pic_try/catch in stdlib_load

This commit is contained in:
Yuichi Nishiwaki 2014-03-10 01:12:19 +09:00
parent d227c22379
commit 851187f7bb
1 changed files with 10 additions and 13 deletions

View File

@ -33,26 +33,23 @@ void
pic_load_stdlib(pic_state *pic) pic_load_stdlib(pic_state *pic)
{ {
static const char *filename = "piclib/built-in.scm"; static const char *filename = "piclib/built-in.scm";
jmp_buf jmp, *prev_jmp = pic->jmp;
if (setjmp(jmp) == 0) { pic_try {
pic->jmp = &jmp;
/* load 'built-in.scm' */
pic_load(pic, filename);
#if DEBUG
puts("successfully loaded stdlib");
#endif
} }
else { pic_catch {
/* error! */ /* error! */
fputs("fatal error: failure in loading built-in.scm\n", stderr); fputs("fatal error: failure in loading built-in.scm\n", stderr);
fputs(pic_errmsg(pic), stderr); fputs(pic_errmsg(pic), stderr);
abort(); 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) \ #define PUSH_SYM(pic, lst, name) \