Fossil SCM
Fix TTY comment line break logic for UTF8 multi-byte characters.
Commit
e62161976ef88735ce0aa0a6c85d2daf5d8f4647a3a1427a12ca6626cf69cd81
Parent
8a6e31f6372504e…
1 file changed
+2
-3
+2
-3
| --- src/comformat.c | ||
| +++ src/comformat.c | ||
| @@ -226,13 +226,12 @@ | ||
| 226 | 226 | }else{ |
| 227 | 227 | charCnt++; |
| 228 | 228 | } |
| 229 | 229 | assert( c!='\n' || charCnt==0 ); |
| 230 | 230 | fossil_print("%c", c); |
| 231 | - maxChars -= useChars; | |
| 232 | - if( maxChars==0 ) break; | |
| 233 | - assert( maxChars>0 ); | |
| 231 | + if( (c&0x80)==0 || (zLine[index+1]&0xc0)!=0xc0 ) maxChars -= useChars; | |
| 232 | + if( maxChars<=0 ) break; | |
| 234 | 233 | if( c=='\n' ) break; |
| 235 | 234 | } |
| 236 | 235 | if( charCnt>0 ){ |
| 237 | 236 | fossil_print("\n"); |
| 238 | 237 | lineCnt++; |
| 239 | 238 |
| --- src/comformat.c | |
| +++ src/comformat.c | |
| @@ -226,13 +226,12 @@ | |
| 226 | }else{ |
| 227 | charCnt++; |
| 228 | } |
| 229 | assert( c!='\n' || charCnt==0 ); |
| 230 | fossil_print("%c", c); |
| 231 | maxChars -= useChars; |
| 232 | if( maxChars==0 ) break; |
| 233 | assert( maxChars>0 ); |
| 234 | if( c=='\n' ) break; |
| 235 | } |
| 236 | if( charCnt>0 ){ |
| 237 | fossil_print("\n"); |
| 238 | lineCnt++; |
| 239 |
| --- src/comformat.c | |
| +++ src/comformat.c | |
| @@ -226,13 +226,12 @@ | |
| 226 | }else{ |
| 227 | charCnt++; |
| 228 | } |
| 229 | assert( c!='\n' || charCnt==0 ); |
| 230 | fossil_print("%c", c); |
| 231 | if( (c&0x80)==0 || (zLine[index+1]&0xc0)!=0xc0 ) maxChars -= useChars; |
| 232 | if( maxChars<=0 ) break; |
| 233 | if( c=='\n' ) break; |
| 234 | } |
| 235 | if( charCnt>0 ){ |
| 236 | fossil_print("\n"); |
| 237 | lineCnt++; |
| 238 |