diff --git a/src/sbbs3/jsexec.c b/src/sbbs3/jsexec.c index d3e45b85014d5cbb46ab93adfe1380ff6fbbbb1f..b4f99261a78805cd6bf555c14bc1c34116ede36b 100644 --- a/src/sbbs3/jsexec.c +++ b/src/sbbs3/jsexec.c @@ -935,6 +935,7 @@ long js_exec(const char *fname, char** args) long double start; long double diff; JSBool exec_result; + BOOL abort = FALSE; if(fname!=NULL) { if(isfullpath(fname)) { @@ -1041,21 +1042,25 @@ long js_exec(const char *fname, char** args) js_PrepareToExecute(js_cx, js_glob, fname==NULL ? NULL : path, orig_cwd, js_glob); start=xp_timer(); if(debugger) - debug_prompt(js_cx, js_script); - exec_result = JS_ExecuteScript(js_cx, js_glob, js_script, &rval); - JS_GetProperty(js_cx, js_glob, "exit_code", &rval); - if(rval!=JSVAL_VOID && JSVAL_IS_NUMBER(rval)) { - char *p; - - JSVALUE_TO_MSTRING(js_cx, rval, p, NULL); - mfprintf(statfp,"Using JavaScript exit_code: %s",p); - free(p); - JS_ValueToInt32(js_cx,rval,&result); - } else if(!exec_result) + abort = debug_prompt(js_cx, js_script) == DEBUG_EXIT; + if (abort) { result = EXIT_FAILURE; - js_EvalOnExit(js_cx, js_glob, &cb); - - JS_ReportPendingException(js_cx); + } else { + exec_result = JS_ExecuteScript(js_cx, js_glob, js_script, &rval); + JS_GetProperty(js_cx, js_glob, "exit_code", &rval); + if(rval!=JSVAL_VOID && JSVAL_IS_NUMBER(rval)) { + char *p; + + JSVALUE_TO_MSTRING(js_cx, rval, p, NULL); + mfprintf(statfp,"Using JavaScript exit_code: %s",p); + free(p); + JS_ValueToInt32(js_cx,rval,&result); + } else if(!exec_result) + result = EXIT_FAILURE; + js_EvalOnExit(js_cx, js_glob, &cb); + + JS_ReportPendingException(js_cx); + } if((diff=xp_timer()-start) > 0) mfprintf(statfp,"%s executed in %.2Lf seconds"