diff --git a/src/sbbs3/js_internal.c b/src/sbbs3/js_internal.c index afa5cd907b8637de6daf64be2ee05edb6d6ceeb5..f90d270d4defdd9895bf60b92336469bb481803b 100644 --- a/src/sbbs3/js_internal.c +++ b/src/sbbs3/js_internal.c @@ -294,7 +294,7 @@ js_execfile(JSContext *cx, uintN argc, jsval *arglist) JSObject* pscope; JSObject* js_script=NULL; JSObject* nargv; - jsval rval; + jsval rval = JSVAL_VOID; jsrefcount rc; uintN i; jsval val; @@ -465,7 +465,9 @@ js_execfile(JSContext *cx, uintN argc, jsval *arglist) JS_GetPendingException(cx, &rval); } else { - JS_GetProperty(cx, js_scope, "exit_code", &rval); + jsval exit_code = JSVAL_VOID; + if(JS_GetProperty(cx, js_scope, "exit_code", &exit_code) && JSVAL_IS_NUMBER(exit_code)) + rval = exit_code; } JS_SET_RVAL(cx, arglist, rval); JS_ClearPendingException(cx); @@ -935,7 +937,7 @@ void DLLCALL js_PrepareToExecute(JSContext *cx, JSObject *obj, const char *filen JS_DefineProperty(cx, js, "scope", OBJECT_TO_JSVAL(scope) ,NULL,NULL,JSPROP_ENUMERATE|JSPROP_READONLY); } - JS_DefineProperty(cx, scope, "exit_code", JSVAL_NULL + JS_DefineProperty(cx, scope, "exit_code", JSVAL_VOID ,NULL,NULL,JSPROP_ENUMERATE|JSPROP_PERMANENT); #if defined(_MSC_VER) _set_invalid_parameter_handler(msvc_invalid_parameter_handler);