summaryrefslogtreecommitdiff
path: root/main.c
diff options
context:
space:
mode:
Diffstat (limited to 'main.c')
-rw-r--r--main.c22
1 files changed, 15 insertions, 7 deletions
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);
}