diff --git a/src/sbbs3/js_file.c b/src/sbbs3/js_file.c index 4d9ea7856bf4530e1490b2c5e0716072ac3b1e94..b134529af7d3b4a6d7a227163f12694aa5280504 100644 --- a/src/sbbs3/js_file.c +++ b/src/sbbs3/js_file.c @@ -2126,26 +2126,32 @@ static JSBool js_file_set(JSContext *cx, JSObject *obj, jsid id, JSBool strict, case FILE_PROP_BUFSIZE: if(!JS_ValueToECMAUint32(cx,*vp,&u)) return(JS_FALSE); - p->bufsize = u; - setvbuf(p->fp, NULL, p->bufmode, p->bufsize); + if (setvbuf(p->fp, NULL, p->bufmode, p->bufsize) == -1) + JS_ReportError(cx, "Unable to set buffer size to %u", u); + else + p->bufsize = u; break; case FILE_PROP_BUFMODE: if(!JS_ValueToInt32(cx,*vp,&i)) return(JS_FALSE); switch(i) { case 0: - p->bufmode = _IONBF; + i = _IONBF; break; case 1: - p->bufmode = _IOLBF; + i = _IOLBF; break; case 2: - p->bufmode = _IOFBF; + i = _IOFBF; break; default: - JS_ReportError(cx,"Invalid buffer mode",WHERE); + JS_ReportError(cx,"Invalid buffer mode"); return JS_FALSE; } + if (setvbuf(p->fp, NULL, i, p->bufsize) == -1) + JS_ReportError(cx, "Unable to set buffer mode to %d", p->bufmode); + else + p->bufmode = i; break; } @@ -2369,7 +2375,7 @@ static JSBool js_file_get(JSContext *cx, JSObject *obj, jsid id, jsval *vp) *vp = INT_TO_JSVAL(2); break; default: - JS_ReportError(cx,"Invalid buffer mode",WHERE); + JS_ReportError(cx,"Invalid buffer mode"); return JS_FALSE; } break;