diff --git a/src/sbbs3/js_console.cpp b/src/sbbs3/js_console.cpp index ef3283854c6becdeaf0b7e231a754d54feaef9ed..46a02d669a0165df811af272cba0567a700f5da5 100644 --- a/src/sbbs3/js_console.cpp +++ b/src/sbbs3/js_console.cpp @@ -295,6 +295,7 @@ js_getkey(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) static JSBool js_handle_ctrlkey(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) { + char key; int32 mode=0; sbbs_t* sbbs; JSString* js_str; @@ -304,13 +305,18 @@ js_handle_ctrlkey(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval * if((sbbs=(sbbs_t*)JS_GetContextPrivate(cx))==NULL) return(JS_FALSE); - if((js_str=JS_ValueToString(cx, argv[0]))==NULL) - return(JS_FALSE); + if(JSVAL_IS_INT(argv[0])) + key=(char)JSVAL_TO_INT(argv[0]); + else { + if((js_str=JS_ValueToString(cx, argv[0]))==NULL) + return(JS_FALSE); + key=*JS_GetStringBytes(js_str); + } if(argc>1) JS_ValueToInt32(cx, argv[1], &mode); - *rval = BOOLEAN_TO_JSVAL(sbbs->handle_ctrlkey(*JS_GetStringBytes(js_str),mode)); + *rval = BOOLEAN_TO_JSVAL(sbbs->handle_ctrlkey(key,mode)); return(JS_TRUE); }