Fixed str::raw::push_byte
It was previously pushing the byte on top of the string's null terminator. I added a test to make sure it doesn't break in the future.
This commit is contained in:
parent
93432a2c2f
commit
147c4fd81b
1 changed files with 8 additions and 1 deletions
|
|
@ -878,7 +878,7 @@ pub mod raw {
|
|||
let new_len = s.len() + 1;
|
||||
s.reserve_at_least(new_len);
|
||||
do s.as_mut_buf |buf, len| {
|
||||
*ptr::mut_offset(buf, len as int) = b;
|
||||
*ptr::mut_offset(buf, (len-1) as int) = b;
|
||||
}
|
||||
set_len(&mut *s, new_len);
|
||||
}
|
||||
|
|
@ -2801,6 +2801,13 @@ mod tests {
|
|||
assert!(!" _ ".is_whitespace());
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_push_byte() {
|
||||
let mut s = ~"ABC";
|
||||
unsafe{raw::push_byte(&mut s, 'D' as u8)};
|
||||
assert_eq!(s, ~"ABCD");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_shift_byte() {
|
||||
let mut s = ~"ABC";
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue