diff options
author | Peter Mikkelsen <peter@pmikkelsen.com> | 2022-02-22 20:41:56 +0000 |
---|---|---|
committer | Peter Mikkelsen <peter@pmikkelsen.com> | 2022-02-22 20:41:56 +0000 |
commit | ae6471f1c94f51df540d95edc09c7749002f44e8 (patch) | |
tree | d810e349ef9926b256d73b0af5b2497a0d355555 /main.c | |
parent | e8e6feeb95cdc3b81a2c17b5a342a3d0b170ccb4 (diff) |
Implement some form of error guards. It may not be perfect yet
Diffstat (limited to 'main.c')
-rw-r--r-- | main.c | 16 |
1 files changed, 7 insertions, 9 deletions
@@ -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; } |