File tree Expand file tree Collapse file tree 2 files changed +25
-1
lines changed Expand file tree Collapse file tree 2 files changed +25
-1
lines changed Original file line number Diff line number Diff line change @@ -480,7 +480,7 @@ impl Wtf8Buf {
480480 #[ inline]
481481 pub ( crate ) fn extend_from_slice ( & mut self , other : & [ u8 ] ) {
482482 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 ;
484484 }
485485}
486486
Original file line number Diff line number Diff line change @@ -725,3 +725,27 @@ fn wtf8_utf8_boundary_between_surrogates() {
725725 string. push ( CodePoint :: from_u32 ( 0xD800 ) . unwrap ( ) ) ;
726726 check_utf8_boundary ( & string, 3 ) ;
727727}
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