Fossil SCM
Port in [https://sqlite.org/src/info/0f5ddd0041]: when reading UTF-8 chararacter-by-chararacter, allow U+fffe and U+fffd to pass through unchanged.
Commit
9ce7e77d9836ceb378c99e05125a4f3b1543106e542bcfebc78e212e7dfb8b5b
Parent
3c8d90873e3b8b0…
1 file changed
+3
-3
+3
-3
| --- src/encode.c | ||
| +++ src/encode.c | ||
| @@ -482,13 +482,13 @@ | ||
| 482 | 482 | if( c>=0xc0 ){ |
| 483 | 483 | c = utf8Trans1[c-0xc0]; |
| 484 | 484 | while( (*(*pz) & 0xc0)==0x80 ){ |
| 485 | 485 | c = (c<<6) + (0x3f & *((*pz)++)); |
| 486 | 486 | } |
| 487 | - if( c<0x80 | |
| 488 | - || (c&0xFFFFF800)==0xD800 | |
| 489 | - || (c&0xFFFFFFFE)==0xFFFE ){ c = 0xFFFD; } | |
| 487 | + if( c<0x80 || (c&0xFFFFF800)==0xD800 ){ | |
| 488 | + c = 0xFFFD; | |
| 489 | + } | |
| 490 | 490 | } |
| 491 | 491 | return c; |
| 492 | 492 | } |
| 493 | 493 | |
| 494 | 494 | /* |
| 495 | 495 |
| --- src/encode.c | |
| +++ src/encode.c | |
| @@ -482,13 +482,13 @@ | |
| 482 | if( c>=0xc0 ){ |
| 483 | c = utf8Trans1[c-0xc0]; |
| 484 | while( (*(*pz) & 0xc0)==0x80 ){ |
| 485 | c = (c<<6) + (0x3f & *((*pz)++)); |
| 486 | } |
| 487 | if( c<0x80 |
| 488 | || (c&0xFFFFF800)==0xD800 |
| 489 | || (c&0xFFFFFFFE)==0xFFFE ){ c = 0xFFFD; } |
| 490 | } |
| 491 | return c; |
| 492 | } |
| 493 | |
| 494 | /* |
| 495 |
| --- src/encode.c | |
| +++ src/encode.c | |
| @@ -482,13 +482,13 @@ | |
| 482 | if( c>=0xc0 ){ |
| 483 | c = utf8Trans1[c-0xc0]; |
| 484 | while( (*(*pz) & 0xc0)==0x80 ){ |
| 485 | c = (c<<6) + (0x3f & *((*pz)++)); |
| 486 | } |
| 487 | if( c<0x80 || (c&0xFFFFF800)==0xD800 ){ |
| 488 | c = 0xFFFD; |
| 489 | } |
| 490 | } |
| 491 | return c; |
| 492 | } |
| 493 | |
| 494 | /* |
| 495 |