File tree 2 files changed +25
-1
lines changed
library/std/src/sys_common
2 files changed +25
-1
lines changed Original file line number Diff line number Diff line change @@ -480,7 +480,7 @@ impl Wtf8Buf {
480
480
#[ inline]
481
481
pub ( crate ) fn extend_from_slice ( & mut self , other : & [ u8 ] ) {
482
482
self . bytes . extend_from_slice ( other) ;
483
- self . is_known_utf8 = self . is_known_utf8 || self . next_surrogate ( 0 ) . is_none ( ) ;
483
+ self . is_known_utf8 = false ;
484
484
}
485
485
}
486
486
Original file line number Diff line number Diff line change @@ -725,3 +725,27 @@ fn wtf8_utf8_boundary_between_surrogates() {
725
725
string. push ( CodePoint :: from_u32 ( 0xD800 ) . unwrap ( ) ) ;
726
726
check_utf8_boundary ( & string, 3 ) ;
727
727
}
728
+
729
+ #[ test]
730
+ fn wobbled_wtf8_plus_bytes_isnt_utf8 ( ) {
731
+ let mut string: Wtf8Buf = unsafe { Wtf8 :: from_bytes_unchecked ( b"\xED \xA0 \x80 " ) . to_owned ( ) } ;
732
+ assert ! ( !string. is_known_utf8) ;
733
+ string. extend_from_slice ( b"some utf-8" ) ;
734
+ assert ! ( !string. is_known_utf8) ;
735
+ }
736
+
737
+ #[ test]
738
+ fn wobbled_wtf8_plus_str_isnt_utf8 ( ) {
739
+ let mut string: Wtf8Buf = unsafe { Wtf8 :: from_bytes_unchecked ( b"\xED \xA0 \x80 " ) . to_owned ( ) } ;
740
+ assert ! ( !string. is_known_utf8) ;
741
+ string. push_str ( "some utf-8" ) ;
742
+ assert ! ( !string. is_known_utf8) ;
743
+ }
744
+
745
+ #[ test]
746
+ fn unwobbly_wtf8_plus_utf8_is_utf8 ( ) {
747
+ let mut string: Wtf8Buf = Wtf8Buf :: from_str ( "hello world" ) ;
748
+ assert ! ( string. is_known_utf8) ;
749
+ string. push_str ( "some utf-8" ) ;
750
+ assert ! ( string. is_known_utf8) ;
751
+ }
You can’t perform that action at this time.
0 commit comments