From b4b98f13da9597b37bf9d06ebabda52fab9837fc Mon Sep 17 00:00:00 2001
From: Rob Swindell <rob@synchro.net>
Date: Sat, 19 Nov 2022 17:00:42 -0800
Subject: [PATCH] Fix return return value when methods auto-open a message base
 (e.g. save_msg())

js_open() sets the rval for the context (e.g. to JSVAL_TRUE), so we need to set
it back to JSVAL_FALSE for failure conditions. Otherwise, the methods always
return true even upon (save-msg) failure.
---
 src/sbbs3/js_msgbase.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/src/sbbs3/js_msgbase.c b/src/sbbs3/js_msgbase.c
index c6d89ffd00..3c7d80650a 100644
--- a/src/sbbs3/js_msgbase.c
+++ b/src/sbbs3/js_msgbase.c
@@ -2578,6 +2578,7 @@ js_save_msg(JSContext *cx, uintN argc, jsval *arglist)
 			return JS_FALSE;
 		if(JS_RVAL(cx, arglist) == JSVAL_FALSE)
 			return JS_TRUE;
+		JS_SET_RVAL(cx, arglist, JSVAL_FALSE);
 	}
 
 	memset(&msg,0,sizeof(msg));
@@ -2727,6 +2728,7 @@ js_vote_msg(JSContext *cx, uintN argc, jsval *arglist)
 			return JS_FALSE;
 		if(JS_RVAL(cx, arglist) == JSVAL_FALSE)
 			return JS_TRUE;
+		JS_SET_RVAL(cx, arglist, JSVAL_FALSE);
 	}
 
 	memset(&msg, 0, sizeof(msg));
@@ -2794,6 +2796,7 @@ js_add_poll(JSContext *cx, uintN argc, jsval *arglist)
 			return JS_FALSE;
 		if(JS_RVAL(cx, arglist) == JSVAL_FALSE)
 			return JS_TRUE;
+		JS_SET_RVAL(cx, arglist, JSVAL_FALSE);
 	}
 
 	memset(&msg, 0, sizeof(msg));
-- 
GitLab