Skip to content

Commit 6c2907c

Browse files
committed
---
yaml --- r: 275766 b: refs/heads/auto c: 7b33d39 h: refs/heads/master
1 parent 4c4a609 commit 6c2907c

File tree

2 files changed

+8
-6
lines changed

2 files changed

+8
-6
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ refs/tags/release-0.3: b5f0d0f648d9a6153664837026ba1be43d3e2503
88
refs/tags/release-0.3.1: 495bae036dfe5ec6ceafd3312b4dca48741e845b
99
refs/tags/release-0.4: e828ea2080499553b97dfe33b3f4d472b4562ad7
1010
refs/tags/release-0.5: 7e3bcfbf21278251ee936ad53e92e9b719702d73
11-
refs/heads/auto: 2fd2670ea0a55b7f7481c5ce2a95c5c5033941d5
11+
refs/heads/auto: 7b33d39da93a9873fa002c6875c934fd13ec7d4a
1212
refs/tags/release-0.6: b4ebcfa1812664df5e142f0134a5faea3918544c
1313
refs/tags/0.1: b19db808c2793fe2976759b85a355c3ad8c8b336
1414
refs/tags/0.2: 1754d02027f2924bed83b0160ee340c7f41d5ea1

branches/auto/src/libcore/char.rs

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -299,14 +299,16 @@ impl CharExt for char {
299299

300300
#[inline]
301301
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;
306308
EscapeUnicode {
307309
c: self,
308310
state: EscapeUnicodeState::Backslash,
309-
offset: n,
311+
offset: msdigit as usize,
310312
}
311313
}
312314

0 commit comments

Comments
 (0)