diff --git a/src/sbbs3/js_global.c b/src/sbbs3/js_global.c
index 93ac6e1e9b4b2c2a3aa4798119bbde51994bd45a..5e59f94afc070d67d528e214b668c37447a25bcb 100644
--- a/src/sbbs3/js_global.c
+++ b/src/sbbs3/js_global.c
@@ -442,8 +442,8 @@ js_lfexpand(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
 static JSBool
 js_word_wrap(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
 {
-	int32		len=79;
-	ulong		i,k,l;
+	int32		l,len=79;
+	ulong		i,k;
 	int			col=1;
 	uchar*		inbuf;
 	char*		outbuf;
@@ -464,14 +464,17 @@ js_word_wrap(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
 
 	outbuf[0]=0;
 	for(i=l=0;inbuf[i];) {
-		if(inbuf[i]=='\r' || inbuf[i]==FF)
+		if(inbuf[i]=='\r' || inbuf[i]==FF) {
+			strncat(outbuf,linebuf,l);
+			l=0;
 			col=1;
+		}
 		else if(inbuf[i]=='\t')
 			col+=8;
 		else if(inbuf[i]>=' ')
 			col++;
 		linebuf[l]=inbuf[i++];
-		if(col<len) {
+		if(col<len && l<len) {
 			l++;
 			continue;
 		}