From 13a9e174736ee52793daf80734300462327bf762 Mon Sep 17 00:00:00 2001
From: rswindell <>
Date: Thu, 3 Oct 2013 00:36:13 +0000
Subject: [PATCH] Install an empty MSVC "invalid parameter handler" in
 js_PrepareToExecute() so that MSVC RTL functions will not terminate the
 program (e.g. jsexec, sbbsctrl) if an invalid parameter is detected (e.g.
 unsupported format specifier in call to strftime()).

---
 src/sbbs3/js_internal.c | 13 +++++++++++++
 1 file changed, 13 insertions(+)

diff --git a/src/sbbs3/js_internal.c b/src/sbbs3/js_internal.c
index e103ae0e87..3d2627f0fe 100644
--- a/src/sbbs3/js_internal.c
+++ b/src/sbbs3/js_internal.c
@@ -627,6 +627,16 @@ JSObject* DLLCALL js_CreateInternalJsObject(JSContext* cx, JSObject* parent, js_
 	return(obj);
 }
 
+#if defined(_MSC_VER)
+void msvc_invalid_parameter_handler(const wchar_t* expression,
+   const wchar_t* function, 
+   const wchar_t* file, 
+   unsigned int line, 
+   uintptr_t pReserved)
+{
+}
+#endif
+
 void DLLCALL js_PrepareToExecute(JSContext *cx, JSObject *obj, const char *filename, const char* startup_dir)
 {
 	JSString*	str;
@@ -658,4 +668,7 @@ void DLLCALL js_PrepareToExecute(JSContext *cx, JSObject *obj, const char *filen
 			JS_DefineProperty(cx, js, "startup_dir", STRING_TO_JSVAL(str)
 				,NULL,NULL,JSPROP_ENUMERATE|JSPROP_READONLY);
 	}
+#if defined(_MSC_VER)
+	_set_invalid_parameter_handler(msvc_invalid_parameter_handler);
+#endif
 }
-- 
GitLab