diff options
author | glenda <glenda@cirno> | 2022-09-12 15:38:48 +0000 |
---|---|---|
committer | glenda <glenda@cirno> | 2022-09-12 15:38:48 +0000 |
commit | 18c383ac2da9b56a84374645eac3868de0c9331e (patch) | |
tree | 2673338b6522b1b410b6f25660b94b04a84f9814 /error.c | |
parent | 9f463939c96f8528819c66678c1be0c6333cdd11 (diff) |
Try to throw errors on C stack overflows
Diffstat (limited to 'error.c')
-rw-r--r-- | error.c | 4 |
1 files changed, 4 insertions, 0 deletions
@@ -67,6 +67,7 @@ errorstr(int code) case EValue: err = L"VALUE ERROR"; break; case EDomain: err = L"DOMAIN ERROR"; break; case ETimeout: err = L"TIMEOUT ERROR"; break; + case EStack: err = L"STACK OVERFLOW"; break; case ENotImplemented: err = L"NOT IMPLEMENTED"; break; default: err = L""; break; } @@ -77,11 +78,14 @@ void displayerror(void) { ThreadData *td = getthreaddata(); + int tmp = td->requiredstack; + td->requiredstack = 0; Array *error = allocarray(AtypeArray, 1, 3); error->shape[0] = 3; error->arraydata[0] = mkrunearray(errorstr(td->lasterror)); error->arraydata[1] = mkrunearray(td->lasterrormsg ? td->lasterrormsg : L""); error->arraydata[2] = fnSame(td->name); rundfn(L"0::⎕RAWIO←⍵ ⋄ ('!' ⍵) ⍈ ⎕SESSION", nil, nil, nil, error); + td->requiredstack = tmp; freearray(error); }
\ No newline at end of file |