From 5e7b6662502a82b6f1a789277d3dc2e68aa4eb13 Mon Sep 17 00:00:00 2001 From: Erick Tryzelaar Date: Tue, 6 Aug 2013 16:19:31 -0700 Subject: [PATCH] std: update str.push_byte to work without str trailing nulls --- src/libstd/str.rs | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/libstd/str.rs b/src/libstd/str.rs index a77371bbfc92..60148e1432c0 100644 --- a/src/libstd/str.rs +++ b/src/libstd/str.rs @@ -1064,15 +1064,24 @@ pub mod raw { } /// Appends a byte to a string. (Not UTF-8 safe). + #[cfg(stage0)] pub unsafe fn push_byte(s: &mut ~str, b: u8) { let new_len = s.len() + 1; s.reserve_at_least(new_len); do s.as_mut_buf |buf, len| { - *ptr::mut_offset(buf, (len-1) as int) = b; + *ptr::mut_offset(buf, len as int) = b; } set_len(&mut *s, new_len); } + /// Appends a byte to a string. (Not UTF-8 safe). + #[cfg(not(stage0))] + #[inline] + pub unsafe fn push_byte(s: &mut ~str, b: u8) { + let v: &mut ~[u8] = cast::transmute(s); + v.push(b); + } + /// Appends a vector of bytes to a string. (Not UTF-8 safe). unsafe fn push_bytes(s: &mut ~str, bytes: &[u8]) { let new_len = s.len() + bytes.len();