File tree Expand file tree Collapse file tree 2 files changed +8
-6
lines changed Expand file tree Collapse file tree 2 files changed +8
-6
lines changed Original file line number Diff line number Diff line change 1
1
---
2
- refs/heads/master: 2fd2670ea0a55b7f7481c5ce2a95c5c5033941d5
2
+ refs/heads/master: 7b33d39da93a9873fa002c6875c934fd13ec7d4a
3
3
refs/heads/snap-stage3: 235d77457d80b549dad3ac36d94f235208a1eafb
4
4
refs/heads/try: 49312a405e14a449b98fe0056b12a40ac128be4a
5
5
refs/tags/release-0.1: 1f5c5126e96c79d22cb7862f75304136e204f105
Original file line number Diff line number Diff line change @@ -299,14 +299,16 @@ impl CharExt for char {
299
299
300
300
#[ inline]
301
301
fn escape_unicode ( self ) -> EscapeUnicode {
302
- let mut n = 0 ;
303
- while ( self as u32 ) >> ( 4 * ( n + 1 ) ) != 0 {
304
- n += 1 ;
305
- }
302
+ let c = self as u32 ;
303
+ // or-ing 1 ensures that for c==0 the code computes that one
304
+ // digit should be printed and (which is the same) avoids the
305
+ // (31 - 32) underflow
306
+ let msb = 31 - ( c | 1 ) . leading_zeros ( ) ;
307
+ let msdigit = msb / 4 ;
306
308
EscapeUnicode {
307
309
c : self ,
308
310
state : EscapeUnicodeState :: Backslash ,
309
- offset : n ,
311
+ offset : msdigit as usize ,
310
312
}
311
313
}
312
314
You can’t perform that action at this time.
0 commit comments