Skip to content
Snippets Groups Projects
Commit 893314b0 authored by deuce's avatar deuce
Browse files

Fix bug when re-wrapping a non-quoted line.

parent d6c83034
No related branches found
No related tags found
No related merge requests found
...@@ -624,6 +624,7 @@ js_word_wrap(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) ...@@ -624,6 +624,7 @@ js_word_wrap(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
char* prefix=NULL; char* prefix=NULL;
int prefix_len=0; int prefix_len=0;
int prefix_bytes=0; int prefix_bytes=0;
int quote_count=0;
JSString* js_str; JSString* js_str;
if(JSVAL_IS_VOID(argv[0])) if(JSVAL_IS_VOID(argv[0]))
...@@ -668,11 +669,11 @@ js_word_wrap(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) ...@@ -668,11 +669,11 @@ js_word_wrap(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
} }
else if(isspace(inbuf[i+1])) { /* Next line starts with whitespace. This is a "hard" CR. or quoted */ else if(isspace(inbuf[i+1])) { /* Next line starts with whitespace. This is a "hard" CR. or quoted */
if(handle_quotes) { if(handle_quotes) {
/* k will be the new prefix_bytes */
t=1; t=1;
k=prefix_bytes; k=prefix_bytes;
prefix_bytes=0; prefix_bytes=0;
prefix_len=0; prefix_len=0;
quote_count=0;
while(t && t<6) { while(t && t<6) {
prefix_bytes++; prefix_bytes++;
/* Skip CTRL-A codes */ /* Skip CTRL-A codes */
...@@ -688,6 +689,8 @@ js_word_wrap(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) ...@@ -688,6 +689,8 @@ js_word_wrap(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
if(inbuf[i+prefix_bytes]!=' ') { if(inbuf[i+prefix_bytes]!=' ') {
if(prefix_bytes>1) if(prefix_bytes>1)
t=6; t=6;
else
t=0;
} }
else else
t++; t++;
...@@ -721,8 +724,10 @@ js_word_wrap(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) ...@@ -721,8 +724,10 @@ js_word_wrap(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
case 5: /* At '>' next char must be a space */ case 5: /* At '>' next char must be a space */
if(inbuf[i+prefix_bytes]!=' ') if(inbuf[i+prefix_bytes]!=' ')
t=0; t=0;
else else {
t++; t++;
quote_count++;
}
break; break;
} }
} }
...@@ -747,6 +752,7 @@ js_word_wrap(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval) ...@@ -747,6 +752,7 @@ js_word_wrap(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
} }
i+=prefix_bytes-1; /* Keep the space (kinda a cheat... don't tell anyone) */ i+=prefix_bytes-1; /* Keep the space (kinda a cheat... don't tell anyone) */
} }
icol=prefix_len+1;
} }
else { else {
linebuf[l++]='\r'; linebuf[l++]='\r';
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment