aboutsummaryrefslogtreecommitdiff
path: root/jim-eventloop.c
diff options
context:
space:
mode:
authorSteve Bennett <steveb@workware.net.au>2017-09-14 17:36:10 +1000
committerSteve Bennett <steveb@workware.net.au>2017-09-15 12:11:00 +1000
commite9a9ce8c9eb521f5f0d959996f1378721c586fc7 (patch)
tree520a874f6c55532a5d1e7439f0a574a0bd896876 /jim-eventloop.c
parent68df14c54972c633a7c90484145c744bc277a35a (diff)
downloadjimtcl-e9a9ce8c9eb521f5f0d959996f1378721c586fc7.zip
jimtcl-e9a9ce8c9eb521f5f0d959996f1378721c586fc7.tar.gz
jimtcl-e9a9ce8c9eb521f5f0d959996f1378721c586fc7.tar.bz2
eventloop: return from callback is not an error
Signed-off-by: Steve Bennett <steveb@workware.net.au>
Diffstat (limited to 'jim-eventloop.c')
-rw-r--r--jim-eventloop.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/jim-eventloop.c b/jim-eventloop.c
index 09e946a..1b1de47 100644
--- a/jim-eventloop.c
+++ b/jim-eventloop.c
@@ -119,7 +119,7 @@ int Jim_EvalObjBackground(Jim_Interp *interp, Jim_Obj *scriptObjPtr)
retval = Jim_EvalObj(interp, scriptObjPtr);
interp->framePtr = savedFramePtr;
/* Try to report the error (if any) via the bgerror proc */
- if (retval != JIM_OK && !eventLoop->suppress_bgerror) {
+ if (retval != JIM_OK && retval != JIM_RETURN && !eventLoop->suppress_bgerror) {
Jim_Obj *objv[2];
int rc = JIM_ERR;
@@ -433,7 +433,8 @@ int Jim_ProcessEvents(Jim_Interp *interp, int flags)
mask |= JIM_EVENT_EXCEPTION;
if (mask) {
- if (fe->fileProc(interp, fe->clientData, mask) != JIM_OK) {
+ int ret = fe->fileProc(interp, fe->clientData, mask);
+ if (ret != JIM_OK && ret != JIM_RETURN) {
/* Remove the element on handler error */
Jim_DeleteFileHandler(interp, fd, mask);
/* At this point fe is no longer valid - it will be assigned below */