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.
pull/2790/head
Jason Ish 8 years ago
parent 6dbc5be4be
commit 96cc503026

@ -15,7 +15,6 @@
* 02110-1301, USA. * 02110-1301, USA.
*/ */
use std::ffi::CString;
use std::os::raw::c_char; use std::os::raw::c_char;
use std::os::raw::c_int; use std::os::raw::c_int;
use std::os::raw::c_long; use std::os::raw::c_long;
@ -26,7 +25,7 @@ pub enum CLuaState {}
extern { extern {
fn lua_createtable(lua: *mut CLuaState, narr: c_int, nrec: c_int); fn lua_createtable(lua: *mut CLuaState, narr: c_int, nrec: c_int);
fn lua_settable(lua: *mut CLuaState, idx: c_long); 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); fn lua_pushinteger(lua: *mut CLuaState, n: c_long);
} }
@ -50,7 +49,7 @@ impl LuaState {
pub fn pushstring(&self, val: &str) { pub fn pushstring(&self, val: &str) {
unsafe { unsafe {
lua_pushstring(self.lua, CString::new(val).unwrap().as_ptr()); lua_pushlstring(self.lua, val.as_ptr() as *const c_char, val.len());
} }
} }

Loading…
Cancel
Save