summaryrefslogtreecommitdiff
path: root/src/lj_cdata.c
diff options
context:
space:
mode:
authorMike Pall <mike>2015-12-28 13:02:35 +0100
committerMike Pall <mike>2015-12-28 13:02:35 +0100
commit20f4141b1a4abbb42b61b87cc3b52906acb12f0e (patch)
tree19ad75159213a32751bd0e6de3b6c672dbafe33c /src/lj_cdata.c
parent0345f361531c756367257eb2f147c707e1710218 (diff)
downloadluajit-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.c9
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. */
53GCcdata *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. */
53void LJ_FASTCALL lj_cdata_free(global_State *g, GCcdata *cd) 62void LJ_FASTCALL lj_cdata_free(global_State *g, GCcdata *cd)
54{ 63{