It's far too easy to write 'stack_guard' as opposed to 'stack_err_guard'!
And it will work until something fails! Maybe there should be a test that calls every possible function that invokes to_lua / from_lua with a type where both directions fail?
This commit is contained in:
parent
ce7e8e61fd
commit
7231e95195
|
@ -1,4 +1,3 @@
|
||||||
|
|
||||||
use std::sync::Arc;
|
use std::sync::Arc;
|
||||||
|
|
||||||
use {ExternalError, Function, Lua, MetaMethod, String, UserData, UserDataMethods};
|
use {ExternalError, Function, Lua, MetaMethod, String, UserData, UserDataMethods};
|
||||||
|
@ -179,4 +178,5 @@ fn user_value() {
|
||||||
let ud = lua.create_userdata(MyUserData).unwrap();
|
let ud = lua.create_userdata(MyUserData).unwrap();
|
||||||
ud.set_user_value("hello").unwrap();
|
ud.set_user_value("hello").unwrap();
|
||||||
assert_eq!(ud.get_user_value::<String>().unwrap(), "hello");
|
assert_eq!(ud.get_user_value::<String>().unwrap(), "hello");
|
||||||
|
assert!(ud.get_user_value::<u32>().is_err());
|
||||||
}
|
}
|
||||||
|
|
|
@ -406,7 +406,7 @@ impl<'lua> AnyUserData<'lua> {
|
||||||
pub fn set_user_value<V: ToLua<'lua>>(&self, v: V) -> Result<()> {
|
pub fn set_user_value<V: ToLua<'lua>>(&self, v: V) -> Result<()> {
|
||||||
let lua = self.0.lua;
|
let lua = self.0.lua;
|
||||||
unsafe {
|
unsafe {
|
||||||
stack_guard(lua.state, 0, || {
|
stack_err_guard(lua.state, 0, || {
|
||||||
check_stack(lua.state, 2);
|
check_stack(lua.state, 2);
|
||||||
lua.push_ref(lua.state, &self.0);
|
lua.push_ref(lua.state, &self.0);
|
||||||
lua.push_value(lua.state, v.to_lua(lua)?);
|
lua.push_value(lua.state, v.to_lua(lua)?);
|
||||||
|
@ -423,7 +423,7 @@ impl<'lua> AnyUserData<'lua> {
|
||||||
pub fn get_user_value<V: FromLua<'lua>>(&self) -> Result<V> {
|
pub fn get_user_value<V: FromLua<'lua>>(&self) -> Result<V> {
|
||||||
let lua = self.0.lua;
|
let lua = self.0.lua;
|
||||||
unsafe {
|
unsafe {
|
||||||
stack_guard(lua.state, 0, || {
|
stack_err_guard(lua.state, 0, || {
|
||||||
check_stack(lua.state, 2);
|
check_stack(lua.state, 2);
|
||||||
lua.push_ref(lua.state, &self.0);
|
lua.push_ref(lua.state, &self.0);
|
||||||
ffi::lua_getuservalue(lua.state, -1);
|
ffi::lua_getuservalue(lua.state, -1);
|
||||||
|
|
Loading…
Reference in New Issue