File tree Expand file tree Collapse file tree 2 files changed +18
-18
lines changed
branches/tmp/src/libcollections Expand file tree Collapse file tree 2 files changed +18
-18
lines changed Original file line number Diff line number Diff line change @@ -32,7 +32,7 @@ refs/heads/building: 126db549b038c84269a1e4fe46f051b2c15d6970
32
32
refs/heads/beta: 4efc4ec178f6ddf3c8cd268b011f3a04056f9d16
33
33
refs/heads/windistfix: 7608dbad651f02e837ed05eef3d74a6662a6e928
34
34
refs/tags/1.0.0-alpha: e42bd6d93a1d3433c486200587f8f9e12590a4d7
35
- refs/heads/tmp: c5d0e2a0733b5271d1044979cf824dccb2a3c3d5
35
+ refs/heads/tmp: e87c62fb12e6b02cfc39fc2a16c315615714757a
36
36
refs/tags/1.0.0-alpha.2: 4c705f6bc559886632d3871b04f58aab093bfa2f
37
37
refs/tags/homu-tmp: bea1c4a78e5233ea6f85a2028a26e08c26635fca
38
38
refs/heads/gate: 97c84447b65164731087ea82685580cc81424412
Original file line number Diff line number Diff line change @@ -468,24 +468,24 @@ impl String {
468
468
#[ inline]
469
469
#[ stable( feature = "rust1" , since = "1.0.0" ) ]
470
470
pub fn push ( & mut self , ch : char ) {
471
- if ( ch as u32 ) < 0x80 {
472
- self . vec . push ( ch as u8 ) ;
473
- return ;
474
- }
475
-
476
- let cur_len = self . len ( ) ;
477
- // This may use up to 4 bytes.
478
- self . vec . reserve ( 4 ) ;
471
+ match ch. len_utf8 ( ) {
472
+ 1 => self . vec . push ( ch as u8 ) ,
473
+ ch_len => {
474
+ let cur_len = self . len ( ) ;
475
+ // This may use up to 4 bytes.
476
+ self . vec . reserve ( ch_len) ;
479
477
480
- unsafe {
481
- // Attempt to not use an intermediate buffer by just pushing bytes
482
- // directly onto this string.
483
- let slice = slice:: from_raw_parts_mut (
484
- self . vec . as_mut_ptr ( ) . offset ( cur_len as isize ) ,
485
- 4
486
- ) ;
487
- let used = ch. encode_utf8 ( slice) . unwrap_or ( 0 ) ;
488
- self . vec . set_len ( cur_len + used) ;
478
+ unsafe {
479
+ // Attempt to not use an intermediate buffer by just pushing bytes
480
+ // directly onto this string.
481
+ let slice = slice:: from_raw_parts_mut (
482
+ self . vec . as_mut_ptr ( ) . offset ( cur_len as isize ) ,
483
+ ch_len
484
+ ) ;
485
+ let used = ch. encode_utf8 ( slice) . unwrap_or ( 0 ) ;
486
+ self . vec . set_len ( cur_len + used) ;
487
+ }
488
+ }
489
489
}
490
490
}
491
491
You can’t perform that action at this time.
0 commit comments