diff options
author | Peter Mikkelsen <petermikkelsen10@gmail.com> | 2022-01-21 15:18:22 +0000 |
---|---|---|
committer | Peter Mikkelsen <petermikkelsen10@gmail.com> | 2022-01-21 15:18:22 +0000 |
commit | 40c021d964bc60d2b60dd78022e180c964ea1b67 (patch) | |
tree | aee97fdfef0378c94871579b8bc12cbdca583553 /main.c | |
parent | 1ddd7de5b15f52c13a5c084445253655a94bd970 (diff) |
Implement better error handling, but still no error guards
Diffstat (limited to 'main.c')
-rw-r--r-- | main.c | 22 |
1 files changed, 15 insertions, 7 deletions
@@ -27,23 +27,31 @@ main(int argc, char *argv[]) break; }ARGEND + int errorcode; +restart: + SETUPERROR(errorcode); + if(errorcode){ + if(globalerror.msg) + print("%S: %S\n", errorstrs[errorcode], globalerror.msg); + else + print("%S\n", errorstrs[errorcode]); + goto restart; + } + while(!off){ checkmem("main loop"); Rune *input = prompt(L"\t"); Datum *result = evalline(input, 1); - if(result == nil){ - if(errormsg == nil) - off = 1; - else - print("ERROR: %S\n", errormsg); - }else{ + if(result == nil) + continue; + else{ if(result[0].shy == 0) print("%S\n", ppdatum(*result)); if(result->tag == ArrayTag) freearray(result->array); free(result); } - print("Unfreed arrays: %d\n", alloccounts); + /* print("Unfreed arrays: %d\n", alloccounts); */ } exits(nil); } |