diff --git a/src/sbbs3/main.cpp b/src/sbbs3/main.cpp index d5416363e81be1aacb7d3057456ee37b78cf3721..a238975b1ba316224eec2d4bafe99e305a25510d 100644 --- a/src/sbbs3/main.cpp +++ b/src/sbbs3/main.cpp @@ -110,7 +110,7 @@ js_print(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) static JSBool js_printf(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) { - char tmp[1024]; + char* p; uintN i; JSString * fmt; JSString * str; @@ -136,8 +136,11 @@ js_printf(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) arglist[i-1]=NULL; } - vsprintf(tmp,JS_GetStringBytes(fmt),(char*)arglist); - sbbs->bputs(tmp); + if((p=JS_vsmprintf(JS_GetStringBytes(fmt),(char*)arglist))==NULL) + return JS_FALSE; + + sbbs->bputs(p); + JS_smprintf_free(p); return JS_TRUE; }