diff options
| author | Benoit Germain <bnt.germain@gmail.com> | 2018-11-15 11:20:14 +0100 |
|---|---|---|
| committer | Benoit Germain <bnt.germain@gmail.com> | 2018-11-15 11:20:14 +0100 |
| commit | 01f83215a2ad235fbf306f591c6c0547b1bb7047 (patch) | |
| tree | 51d1edff1c3f684bac388c64d91ee30d8f6fbbf2 /deep_test | |
| parent | 55acf8e19728ac39581c35f1324debf9449bd185 (diff) | |
| download | lanes-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.c | 3 |
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 | ||
| 18 | struct s_MyDeepUserdata | 18 | struct s_MyDeepUserdata |
| 19 | { | 19 | { |
| 20 | DeepPrelude prelude; // Deep userdata MUST start with this header | ||
| 20 | lua_Integer val; | 21 | lua_Integer val; |
| 21 | }; | 22 | }; |
| 22 | static void* deep_test_id( lua_State* L, enum eDeepOp op_); | 23 | 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_) | |||
| 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 | ||
