diff options
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; } |