diff --git a/user/src/bin/ch2_write1.rs b/user/src/bin/ch2_write1.rs index 6d1c835..613cb06 100644 --- a/user/src/bin/ch2_write1.rs +++ b/user/src/bin/ch2_write1.rs @@ -20,7 +20,18 @@ pub fn main() -> i32 { DATA_STRING.len() as isize ); assert_eq!(write(STDOUT, &DATA_STRING.as_bytes()[..5]), 5); - let stack_string = "string from stack section\n"; + // let stack_string = "string from stack section\n"; + let string = "string from stack section!!\n"; + let stack_string_holder: [u8; 50] = [0; 50]; + let stack_string_u8 = unsafe { + core::ptr::copy( + string.as_ptr() as *const u8, + stack_string_holder.as_ptr() as *mut u8, + string.len(), + ); + core::slice::from_raw_parts(stack_string_holder.as_ptr(), string.len()) + }; + let stack_string = core::str::from_utf8(stack_string_u8.as_ref()).unwrap(); assert_eq!( write(STDOUT, stack_string.as_bytes()), stack_string.len() as isize