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.

stephan 2026-09-24 10:59 UTC trunk
Commit 9ce7e77d9836ceb378c99e05125a4f3b1543106e542bcfebc78e212e7dfb8b5b
1 file changed +3 -3
+3 -3
--- src/encode.c
+++ src/encode.c
@@ -482,13 +482,13 @@
482482
if( c>=0xc0 ){
483483
c = utf8Trans1[c-0xc0];
484484
while( (*(*pz) & 0xc0)==0x80 ){
485485
c = (c<<6) + (0x3f & *((*pz)++));
486486
}
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
+ }
490490
}
491491
return c;
492492
}
493493
494494
/*
495495
--- 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

Keyboard Shortcuts

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