summaryrefslogtreecommitdiff
path: root/main.c
diff options
context:
space:
mode:
Diffstat (limited to 'main.c')
-rw-r--r--main.c16
1 files changed, 7 insertions, 9 deletions
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;
}