From 01f83215a2ad235fbf306f591c6c0547b1bb7047 Mon Sep 17 00:00:00 2001 From: Benoit Germain Date: Thu, 15 Nov 2018 11:20:14 +0100 Subject: Deep userdata must embed DeepPrelude to save an allocation (also changes Deep protocol) --- deep_test/deep_test.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'deep_test') 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 @@ struct s_MyDeepUserdata { + DeepPrelude prelude; // Deep userdata MUST start with this header lua_Integer val; }; static 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_) case eDO_new: { struct s_MyDeepUserdata* deep_test = (struct s_MyDeepUserdata*) malloc( sizeof(struct s_MyDeepUserdata)); + deep_test->prelude.magic.value = DEEP_VERSION.value; deep_test->val = 0; return deep_test; } @@ -81,7 +83,6 @@ static void* deep_test_id( lua_State* L, enum eDeepOp op_) case eDO_metatable: { luaL_getmetatable( L, "deep"); // mt - luaG_pushdeepversion( L); // mt version return NULL; } -- cgit v1.2.3-55-g6feb