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;