From 4ef020a8c7bf6d4895a4e3bb86bb95eb9712f9e8 Mon Sep 17 00:00:00 2001 From: rswindell <> Date: Thu, 2 Dec 2004 03:17:54 +0000 Subject: [PATCH] js_GenericBranchCallback() only terminates the script if branch.auto_terminated is TRUE. --- src/sbbs3/js_internal.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/sbbs3/js_internal.c b/src/sbbs3/js_internal.c index 3483ec8e05..870343e865 100644 --- a/src/sbbs3/js_internal.c +++ b/src/sbbs3/js_internal.c @@ -200,22 +200,29 @@ js_GenericBranchCallback(JSContext *cx, js_branch_t* branch) { branch->counter++; + /* Terminated? */ + if(branch->auto_terminate && + (branch->terminated!=NULL && *branch->terminated)) { + JS_ReportError(cx,"Terminated"); + branch->counter=0; + return(JS_FALSE); + } + /* Infinite loop? */ if(branch->limit && branch->counter > branch->limit) { JS_ReportError(cx,"Infinite loop (%lu branches) detected",branch->counter); branch->counter=0; return(JS_FALSE); } + /* Give up timeslices every once in a while */ if(branch->yield_interval && (branch->counter%branch->yield_interval)==0) YIELD(); + /* Periodic Garbage Collection */ if(branch->gc_interval && (branch->counter%branch->gc_interval)==0) JS_MaybeGC(cx), branch->gc_attempts++; - if(branch->terminated!=NULL && *branch->terminated) - return(JS_FALSE); - return(JS_TRUE); } -- GitLab