From 3132dfcbe901eeb6ce6d113c459d72fe6459981a Mon Sep 17 00:00:00 2001 From: Jeff Schmitz Date: Sun, 15 May 2016 19:47:04 -0400 Subject: [PATCH] fix for ffi string crash Using MSVC Rust 1.8, opengl example crashes on String::from_raw_parts. Replaced with string from slice::from_raw_parts. --- src/tracking.rs | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/tracking.rs b/src/tracking.rs index 7c5e9c1..afa78d4 100644 --- a/src/tracking.rs +++ b/src/tracking.rs @@ -3,6 +3,8 @@ use openvr_sys::Enum_ETrackedPropertyError::*; use subsystems::*; use error::*; +use std::slice; +use std::str; /// Describes a string property of a tracked device #[derive(Debug, Copy, Clone)] @@ -127,7 +129,10 @@ impl TrackedDevicePose { ); if size > 0 { - return Ok(String::from_raw_parts(val_out.as_ptr() as *mut _, (size - 1) as usize, (size - 1) as usize)); + let ptr = val_out.as_ptr() as *mut u8; + let mem = slice::from_raw_parts(ptr, size as usize); + let str = str::from_utf8(mem).unwrap(); + return Ok(String::from(str)); } else { return Err(Error::from_raw(err)); }