aboutsummaryrefslogtreecommitdiff
path: root/deep_test
diff options
context:
space:
mode:
authorBenoit Germain <bnt.germain@gmail.com>2018-11-15 11:20:14 +0100
committerBenoit Germain <bnt.germain@gmail.com>2018-11-15 11:20:14 +0100
commit01f83215a2ad235fbf306f591c6c0547b1bb7047 (patch)
tree51d1edff1c3f684bac388c64d91ee30d8f6fbbf2 /deep_test
parent55acf8e19728ac39581c35f1324debf9449bd185 (diff)
downloadlanes-01f83215a2ad235fbf306f591c6c0547b1bb7047.tar.gz
lanes-01f83215a2ad235fbf306f591c6c0547b1bb7047.tar.bz2
lanes-01f83215a2ad235fbf306f591c6c0547b1bb7047.zip
Deep userdata must embed DeepPrelude to save an allocation (also changes Deep protocol)
Diffstat (limited to 'deep_test')
-rw-r--r--deep_test/deep_test.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/deep_test/deep_test.c b/deep_test/deep_test.c
index 4aac586..7edd33f 100644
--- a/deep_test/deep_test.c
+++ b/deep_test/deep_test.c
@@ -17,6 +17,7 @@
17 17
18struct s_MyDeepUserdata 18struct s_MyDeepUserdata
19{ 19{
20 DeepPrelude prelude; // Deep userdata MUST start with this header
20 lua_Integer val; 21 lua_Integer val;
21}; 22};
22static void* deep_test_id( lua_State* L, enum eDeepOp op_); 23static void* deep_test_id( lua_State* L, enum eDeepOp op_);
@@ -67,6 +68,7 @@ static void* deep_test_id( lua_State* L, enum eDeepOp op_)
67 case eDO_new: 68 case eDO_new:
68 { 69 {
69 struct s_MyDeepUserdata* deep_test = (struct s_MyDeepUserdata*) malloc( sizeof(struct s_MyDeepUserdata)); 70 struct s_MyDeepUserdata* deep_test = (struct s_MyDeepUserdata*) malloc( sizeof(struct s_MyDeepUserdata));
71 deep_test->prelude.magic.value = DEEP_VERSION.value;
70 deep_test->val = 0; 72 deep_test->val = 0;
71 return deep_test; 73 return deep_test;
72 } 74 }
@@ -81,7 +83,6 @@ static void* deep_test_id( lua_State* L, enum eDeepOp op_)
81 case eDO_metatable: 83 case eDO_metatable:
82 { 84 {
83 luaL_getmetatable( L, "deep"); // mt 85 luaL_getmetatable( L, "deep"); // mt
84 luaG_pushdeepversion( L); // mt version
85 return NULL; 86 return NULL;
86 } 87 }
87 88