From 96cc5030263ac66037c9bb98cd0e5b57c54a0ddc Mon Sep 17 00:00:00 2001 From: Jason Ish Date: Thu, 15 Jun 2017 23:39:26 -0600 Subject: [PATCH] rust/lua: use lua_pushlstring for strings Lua strings can contain NULLs, and Rust strings are UTF8 which can also contain NULLs. Use pushlstring so a NULL containing string can be pushed. --- rust/src/lua.rs | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/rust/src/lua.rs b/rust/src/lua.rs index f225dccccd..a640b11cc1 100644 --- a/rust/src/lua.rs +++ b/rust/src/lua.rs @@ -15,7 +15,6 @@ * 02110-1301, USA. */ -use std::ffi::CString; use std::os::raw::c_char; use std::os::raw::c_int; use std::os::raw::c_long; @@ -26,7 +25,7 @@ pub enum CLuaState {} extern { fn lua_createtable(lua: *mut CLuaState, narr: c_int, nrec: c_int); fn lua_settable(lua: *mut CLuaState, idx: c_long); - fn lua_pushstring(lua: *mut CLuaState, s: *const c_char); + fn lua_pushlstring(lua: *mut CLuaState, s: *const c_char, len: usize); fn lua_pushinteger(lua: *mut CLuaState, n: c_long); } @@ -50,7 +49,7 @@ impl LuaState { pub fn pushstring(&self, val: &str) { unsafe { - lua_pushstring(self.lua, CString::new(val).unwrap().as_ptr()); + lua_pushlstring(self.lua, val.as_ptr() as *const c_char, val.len()); } }