From 4a22c3368fe4fd570859fbbf03b971f4913a8569 Mon Sep 17 00:00:00 2001 From: John Hodge Date: Sat, 28 Feb 2015 22:44:10 +0800 Subject: [PATCH 1/2] Fix assuming 32-bit pointers --- src/libcore/fmt/mod.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libcore/fmt/mod.rs b/src/libcore/fmt/mod.rs index 117b829fdff9b..9544fbaa55b25 100644 --- a/src/libcore/fmt/mod.rs +++ b/src/libcore/fmt/mod.rs @@ -700,7 +700,7 @@ impl Display for char { impl Pointer for *const T { fn fmt(&self, f: &mut Formatter) -> Result { f.flags |= 1 << (FlagV1::Alternate as u32); - let ret = LowerHex::fmt(&(*self as u32), f); + let ret = LowerHex::fmt(&(*self as usize), f); f.flags &= !(1 << (FlagV1::Alternate as u32)); ret } From c22d026326f10f8a4e60d49c6fbf37de3c970a78 Mon Sep 17 00:00:00 2001 From: John Hodge Date: Sat, 28 Feb 2015 22:51:29 +0800 Subject: [PATCH 2/2] ifmt - Add a basic test for {:p} getting truncated --- src/test/run-pass/ifmt.rs | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/test/run-pass/ifmt.rs b/src/test/run-pass/ifmt.rs index ab83fb90d3f25..d54de8824e023 100644 --- a/src/test/run-pass/ifmt.rs +++ b/src/test/run-pass/ifmt.rs @@ -137,6 +137,13 @@ pub fn main() { t!(format!("{:+10.3e}", 1.2345e6f64), " +1.234e6"); t!(format!("{:+10.3e}", -1.2345e6f64), " -1.234e6"); + // Test that pointers don't get truncated. + { + let val = usize::MAX; + let exp = format!("{:#x}", val); + t!(format!("{:p}", val as *const isize), exp); + } + // Escaping t!(format!("{{"), "{"); t!(format!("}}"), "}");