Guest User

Untitled

a guest
Jul 19th, 2018
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.67 KB | None | 0 0
  1. #![allow(non_camel_case_types)]
  2.  
  3. use std::ffi::CStr;
  4. use std::ptr;
  5. use std::os::raw::c_void;
  6. use std::mem;
  7.  
  8. fn check_error(e: *const u8) {
  9. if e.is_null() {
  10. println!("Not an error!");
  11. return;
  12. } else {
  13. unsafe {
  14. println!("{}", CStr::from_ptr(e as *const i8).to_str().unwrap());
  15. }
  16. }
  17. }
  18.  
  19. struct rs2_error {
  20. #[allow(dead_code)]
  21. unused: [u8; 8],
  22. }
  23.  
  24. fn rs2_create_context(error: *mut rs2_error) {
  25. unsafe {
  26. std::ptr::write(error, mem::transmute("my_error".as_ptr()));
  27. }
  28. }
  29.  
  30. fn main() {
  31. let error: *mut u8 = ptr::null_mut();
  32. rs2_create_context(error as *mut rs2_error);
  33. check_error(error as *mut u8);
  34. }
Add Comment
Please, Sign In to add comment