Fossil SCM

Fix two bugs (introduced with this branch) that become manifest with invalid UTF-8 sequences.

florian 2018-11-24 07:16 UTC comment-formatter-utf8
Commit b86a2fc7eb209681531ce6df583cdab254a7140b
1 file changed +2
--- src/comformat.c
+++ src/comformat.c
@@ -171,10 +171,11 @@
171171
else if( (c&0xf0)==0xe0 )maxUTF8=3; /* UTF-8 lead byte 1110vvvv */
172172
else if( (c&0xf8)==0xf0 )maxUTF8=4; /* UTF-8 lead byte 11110vvv */
173173
while( i<lengthBytes-1 &&
174174
cchUTF8<maxUTF8 &&
175175
(zString[i+1]&0xc0)==0x80 ){ /* UTF-8 trail byte 10vvvvvv */
176
+ cchUTF8++;
176177
i++;
177178
}
178179
}
179180
}
180181
return lengthUTF8;
@@ -404,10 +405,11 @@
404405
else if( (c&0xf0)==0xe0 )maxUTF8=3; /* UTF-8 lead byte 1110vvvv */
405406
else if( (c&0xf8)==0xf0 )maxUTF8=4; /* UTF-8 lead byte 11110vvv */
406407
zBuf[k++] = c;
407408
while( cchUTF8<maxUTF8 &&
408409
(zText[i+1]&0xc0)==0x80 ){ /* UTF-8 trail byte 10vvvvvv */
410
+ cchUTF8++;
409411
zBuf[k++] = zText[++i];
410412
}
411413
}
412414
else if( fossil_isspace(c) ){
413415
si = i;
414416
--- src/comformat.c
+++ src/comformat.c
@@ -171,10 +171,11 @@
171 else if( (c&0xf0)==0xe0 )maxUTF8=3; /* UTF-8 lead byte 1110vvvv */
172 else if( (c&0xf8)==0xf0 )maxUTF8=4; /* UTF-8 lead byte 11110vvv */
173 while( i<lengthBytes-1 &&
174 cchUTF8<maxUTF8 &&
175 (zString[i+1]&0xc0)==0x80 ){ /* UTF-8 trail byte 10vvvvvv */
 
176 i++;
177 }
178 }
179 }
180 return lengthUTF8;
@@ -404,10 +405,11 @@
404 else if( (c&0xf0)==0xe0 )maxUTF8=3; /* UTF-8 lead byte 1110vvvv */
405 else if( (c&0xf8)==0xf0 )maxUTF8=4; /* UTF-8 lead byte 11110vvv */
406 zBuf[k++] = c;
407 while( cchUTF8<maxUTF8 &&
408 (zText[i+1]&0xc0)==0x80 ){ /* UTF-8 trail byte 10vvvvvv */
 
409 zBuf[k++] = zText[++i];
410 }
411 }
412 else if( fossil_isspace(c) ){
413 si = i;
414
--- src/comformat.c
+++ src/comformat.c
@@ -171,10 +171,11 @@
171 else if( (c&0xf0)==0xe0 )maxUTF8=3; /* UTF-8 lead byte 1110vvvv */
172 else if( (c&0xf8)==0xf0 )maxUTF8=4; /* UTF-8 lead byte 11110vvv */
173 while( i<lengthBytes-1 &&
174 cchUTF8<maxUTF8 &&
175 (zString[i+1]&0xc0)==0x80 ){ /* UTF-8 trail byte 10vvvvvv */
176 cchUTF8++;
177 i++;
178 }
179 }
180 }
181 return lengthUTF8;
@@ -404,10 +405,11 @@
405 else if( (c&0xf0)==0xe0 )maxUTF8=3; /* UTF-8 lead byte 1110vvvv */
406 else if( (c&0xf8)==0xf0 )maxUTF8=4; /* UTF-8 lead byte 11110vvv */
407 zBuf[k++] = c;
408 while( cchUTF8<maxUTF8 &&
409 (zText[i+1]&0xc0)==0x80 ){ /* UTF-8 trail byte 10vvvvvv */
410 cchUTF8++;
411 zBuf[k++] = zText[++i];
412 }
413 }
414 else if( fossil_isspace(c) ){
415 si = i;
416

Keyboard Shortcuts

Open search /
Next entry (timeline) j
Previous entry (timeline) k
Open focused entry Enter
Show this help ?
Toggle theme Top nav button