aboutsummaryrefslogtreecommitdiff
path: root/deep_test/deep_test.c
diff options
context:
space:
mode:
authorBenoit Germain <bnt.germain@gmail.com>2021-06-23 14:44:43 +0200
committerBenoit Germain <bnt.germain@gmail.com>2021-06-23 14:44:43 +0200
commit54e788bc121218f8f1a978ee136e4d0faa67370d (patch)
treeabbb96bbe5d683aabc85ddfd803734550221db73 /deep_test/deep_test.c
parentd1ef9b97e356805c622e4832ec76289bae391a6e (diff)
downloadlanes-54e788bc121218f8f1a978ee136e4d0faa67370d.tar.gz
lanes-54e788bc121218f8f1a978ee136e4d0faa67370d.tar.bz2
lanes-54e788bc121218f8f1a978ee136e4d0faa67370d.zip
updated deep userdata unit test to expose issue #189
Diffstat (limited to 'deep_test/deep_test.c')
-rw-r--r--deep_test/deep_test.c25
1 files changed, 25 insertions, 0 deletions
diff --git a/deep_test/deep_test.c b/deep_test/deep_test.c
index 61c81c5..4bee7fe 100644
--- a/deep_test/deep_test.c
+++ b/deep_test/deep_test.c
@@ -35,6 +35,29 @@ static int deep_set( lua_State* L)
35 35
36// ################################################################################################ 36// ################################################################################################
37 37
38// won't actually do anything as deep userdata don't have uservalue slots
39static int deep_setuv( lua_State* L)
40{
41 struct s_MyDeepUserdata* self = luaG_todeep( L, deep_test_id, 1);
42 int uv = (int) luaL_optinteger( L, 2, 1);
43 lua_settop( L, 3);
44 lua_pushboolean( L, lua_setiuservalue( L, 1, uv) != 0);
45 return 1;
46}
47
48// ################################################################################################
49
50// won't actually do anything as deep userdata don't have uservalue slots
51static int deep_getuv( lua_State* L)
52{
53 struct s_MyDeepUserdata* self = luaG_todeep( L, deep_test_id, 1);
54 int uv = (int) luaL_optinteger( L, 2, 1);
55 lua_getiuservalue( L, 1, uv);
56 return 1;
57}
58
59// ################################################################################################
60
38static int deep_tostring( lua_State* L) 61static int deep_tostring( lua_State* L)
39{ 62{
40 struct s_MyDeepUserdata* self = luaG_todeep( L, deep_test_id, 1); 63 struct s_MyDeepUserdata* self = luaG_todeep( L, deep_test_id, 1);
@@ -57,6 +80,8 @@ static luaL_Reg const deep_mt[] =
57 { "__tostring", deep_tostring}, 80 { "__tostring", deep_tostring},
58 { "__gc", deep_gc}, 81 { "__gc", deep_gc},
59 { "set", deep_set}, 82 { "set", deep_set},
83 { "setuv", deep_setuv},
84 { "getuv", deep_getuv},
60 { NULL, NULL } 85 { NULL, NULL }
61}; 86};
62 87