From ae6471f1c94f51df540d95edc09c7749002f44e8 Mon Sep 17 00:00:00 2001 From: Peter Mikkelsen Date: Tue, 22 Feb 2022 20:41:56 +0000 Subject: Implement some form of error guards. It may not be perfect yet --- main.c | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) (limited to 'main.c') diff --git a/main.c b/main.c index 9acd568..60beed2 100644 --- a/main.c +++ b/main.c @@ -29,18 +29,16 @@ threadmain(int argc, char *argv[]) break; }ARGEND - int errorcode; + ErrorGuard *eg = newerrorguard(mkscalarint(0), nil); restart: - SETUPERROR(errorcode); - if(errorcode){ - /* remove aborted dfn frames */ + if(setjmp(eg->jmp)){ + ThreadData *td = getthreaddata(); + if(td->lasterrormsg) + print("%S: %S\n", errorstrs[td->lasterror], td->lasterrormsg); + else + print("%S\n", errorstrs[td->lasterror]); while(getcurrentdfn()) popdfnframe(); - - if(globalerror.msg) - print("%S: %S\n", errorstrs[errorcode], globalerror.msg); - else - print("%S\n", errorstrs[errorcode]); goto restart; } -- cgit v1.2.3