From 0f547edbd76814f7a8299f5e1647cd0816276ba8 Mon Sep 17 00:00:00 2001 From: Peter Mikkelsen Date: Wed, 23 Feb 2022 11:44:40 +0000 Subject: Add seperate error handlers in threads --- error.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) (limited to 'error.c') diff --git a/error.c b/error.c index 09f2c32..ee6ffe9 100644 --- a/error.c +++ b/error.c @@ -5,18 +5,17 @@ #include "apl9.h" -ErrorGuard *globalerrorguard; - ErrorGuard * newerrorguard(Array *codes, Statement *guard) { + ThreadData *td = getthreaddata(); DfnFrame *fr = getcurrentdfn(); ErrorGuard *eg = emallocz(sizeof(ErrorGuard), 1); eg->active = 1; eg->guard = guard; if(fr == nil) - globalerrorguard = eg; + td->globalerrorguard = eg; else{ eg->next = fr->errorguards; fr->errorguards = eg; @@ -32,9 +31,9 @@ newerrorguard(Array *codes, Statement *guard) void throwerror(Rune *msg, int err) { - ErrorGuard *matching = globalerrorguard; - DfnFrame *frame = getcurrentdfn(); ThreadData *td = getthreaddata(); + ErrorGuard *matching = td->globalerrorguard; + DfnFrame *frame = getcurrentdfn(); td->lasterror = err; if(td->lasterrormsg) free(td->lasterrormsg); -- cgit v1.2.3