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