summaryrefslogtreecommitdiff
path: root/main.c
diff options
context:
space:
mode:
authorPeter Mikkelsen <peter@pmikkelsen.com>2022-02-22 20:41:56 +0000
committerPeter Mikkelsen <peter@pmikkelsen.com>2022-02-22 20:41:56 +0000
commitae6471f1c94f51df540d95edc09c7749002f44e8 (patch)
treed810e349ef9926b256d73b0af5b2497a0d355555 /main.c
parente8e6feeb95cdc3b81a2c17b5a342a3d0b170ccb4 (diff)
Implement some form of error guards. It may not be perfect yet
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;
}