diff options
author | Mike Pall <mike> | 2015-12-28 13:02:35 +0100 |
---|---|---|
committer | Mike Pall <mike> | 2015-12-28 13:02:35 +0100 |
commit | 20f4141b1a4abbb42b61b87cc3b52906acb12f0e (patch) | |
tree | 19ad75159213a32751bd0e6de3b6c672dbafe33c /src/lj_cdata.c | |
parent | 0345f361531c756367257eb2f147c707e1710218 (diff) | |
download | luajit-20f4141b1a4abbb42b61b87cc3b52906acb12f0e.tar.gz luajit-20f4141b1a4abbb42b61b87cc3b52906acb12f0e.tar.bz2 luajit-20f4141b1a4abbb42b61b87cc3b52906acb12f0e.zip |
FFI: Properly unsink non-standard cdata allocations.
Diffstat (limited to 'src/lj_cdata.c')
-rw-r--r-- | src/lj_cdata.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/src/lj_cdata.c b/src/lj_cdata.c index 5cd2c114..30d788e4 100644 --- a/src/lj_cdata.c +++ b/src/lj_cdata.c | |||
@@ -49,6 +49,15 @@ GCcdata *lj_cdata_newv(lua_State *L, CTypeID id, CTSize sz, CTSize align) | |||
49 | return cd; | 49 | return cd; |
50 | } | 50 | } |
51 | 51 | ||
52 | /* Allocate arbitrary C data object. */ | ||
53 | GCcdata *lj_cdata_newx(CTState *cts, CTypeID id, CTSize sz, CTInfo info) | ||
54 | { | ||
55 | if (!(info & CTF_VLA) && ctype_align(info) <= CT_MEMALIGN) | ||
56 | return lj_cdata_new(cts, id, sz); | ||
57 | else | ||
58 | return lj_cdata_newv(cts->L, id, sz, ctype_align(info)); | ||
59 | } | ||
60 | |||
52 | /* Free a C data object. */ | 61 | /* Free a C data object. */ |
53 | void LJ_FASTCALL lj_cdata_free(global_State *g, GCcdata *cd) | 62 | void LJ_FASTCALL lj_cdata_free(global_State *g, GCcdata *cd) |
54 | { | 63 | { |