diff --git a/src/sbbs3/js_global.c b/src/sbbs3/js_global.c index 12bb44933f12d3000a632b35ba50e8dfc3f878cd..278e29e1500a79674d7b326a27da2a5436f98a80 100644 --- a/src/sbbs3/js_global.c +++ b/src/sbbs3/js_global.c @@ -868,20 +868,20 @@ js_exit(JSContext *cx, uintN argc, jsval *arglist) JSObject *obj=JS_THIS_OBJECT(cx, arglist); jsval *argv=JS_ARGV(cx, arglist); jsval val; - - if(argc) { - if((JS_GetProperty(cx, scope, "js", &val) && JSVAL_IS_OBJECT(val)) || - (JS_GetProperty(cx, obj, "js", &val) && JSVAL_IS_OBJECT(val))) { + int exit_code = 0; + + if(argc && JSVAL_IS_NUMBER(argv[0])) + exit_code = JSVAL_TO_INT(argv[0]); + if((JS_GetProperty(cx, scope, "js", &val) && JSVAL_IS_OBJECT(val)) || + (JS_GetProperty(cx, obj, "js", &val) && JSVAL_IS_OBJECT(val))) { + obj = JSVAL_TO_OBJECT(val); + if(obj != NULL && JS_GetProperty(cx, obj, "scope", &val) && JSVAL_IS_OBJECT(val) && !JSVAL_IS_NULL(val)) obj = JSVAL_TO_OBJECT(val); - if(obj != NULL && JS_GetProperty(cx, obj, "scope", &val) && JSVAL_IS_OBJECT(val) && !JSVAL_IS_NULL(val)) - obj = JSVAL_TO_OBJECT(val); - else - obj = JS_THIS_OBJECT(cx, arglist); - } - if(JSVAL_IS_NUMBER(argv[0])) - JS_DefineProperty(cx, obj, "exit_code", argv[0] - ,NULL,NULL,JSPROP_ENUMERATE|JSPROP_READONLY); + else + obj = JS_THIS_OBJECT(cx, arglist); } + JS_DefineProperty(cx, obj, "exit_code", INT_TO_JSVAL(exit_code) + ,NULL,NULL,JSPROP_ENUMERATE|JSPROP_READONLY); JS_SET_RVAL(cx, arglist, JSVAL_VOID); @@ -4826,7 +4826,7 @@ js_qwknet_route(JSContext *cx, uintN argc, jsval *arglist) #endif static jsSyncMethodSpec js_global_functions[] = { - {"exit", js_exit, 0, JSTYPE_VOID, "[number exit_code]" + {"exit", js_exit, 0, JSTYPE_VOID, "[<i>number</i> exit_code=0]" ,JSDOCSTR("Stop script execution, " "optionally setting the global property <tt>exit_code</tt> to the specified numeric value") ,311 @@ -4873,7 +4873,7 @@ static jsSyncMethodSpec js_global_functions[] = { "<i>forced</i> defaults to <tt>true</tt>") ,311 }, - {"random", js_random, 1, JSTYPE_NUMBER, JSDOCSTR("max_number=100") + {"random", js_random, 1, JSTYPE_NUMBER, JSDOCSTR("[max_number=100]") ,JSDOCSTR("Return random integer between <tt>0</tt> and <i>max_number</i>-1") ,310 },