From 40c021d964bc60d2b60dd78022e180c964ea1b67 Mon Sep 17 00:00:00 2001 From: Peter Mikkelsen Date: Fri, 21 Jan 2022 15:18:22 +0000 Subject: Implement better error handling, but still no error guards --- main.c | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) (limited to 'main.c') diff --git a/main.c b/main.c index 96a6d07..13750ef 100644 --- a/main.c +++ b/main.c @@ -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); } -- cgit v1.2.3