From 02c3428c09f29fdbc3c9e1e71629d2970c7bdeca Mon Sep 17 00:00:00 2001
From: rswindell <>
Date: Mon, 27 Nov 2017 22:38:59 +0000
Subject: [PATCH] Fix: when using the '-!' option, if the script failed with an
 exception, there would be no pause on exit. Now we insure an error level of
 (at least) 1 if the script execution fails for any reason.

---
 src/sbbs3/jsexec.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/src/sbbs3/jsexec.c b/src/sbbs3/jsexec.c
index e2118bc933..fda2408347 100644
--- a/src/sbbs3/jsexec.c
+++ b/src/sbbs3/jsexec.c
@@ -876,6 +876,7 @@ long js_exec(const char *fname, char** args)
 	int32		result=0;
 	long double	start;
 	long double	diff;
+	JSBool		exec_result;
 
 	if(fname!=NULL) {
 		if(isfullpath(fname)) {
@@ -981,7 +982,7 @@ long js_exec(const char *fname, char** args)
 	start=xp_timer();
 	if(debugger)
 		debug_prompt(js_cx, js_script);
-	JS_ExecuteScript(js_cx, js_glob, js_script, &rval);
+	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;
@@ -1003,6 +1004,8 @@ long js_exec(const char *fname, char** args)
 	if(js_buf!=NULL)
 		free(js_buf);
 
+	if(result == 0 && !exec_result)
+		return EXIT_FAILURE;
 	return(result);
 }
 
-- 
GitLab