From c2dcd091815a1841ea587f1f260304e3422789ea Mon Sep 17 00:00:00 2001 From: "Robert G. Jakabosky" Date: Wed, 30 Nov 2011 15:20:53 -0800 Subject: [PATCH] Fix convertion of Ctx from cdata to lightuserdata for passing to sub-threads. --- src/pre_generated-zmq.nobj.c | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/src/pre_generated-zmq.nobj.c b/src/pre_generated-zmq.nobj.c index 8179d66..21e45ef 100644 --- a/src/pre_generated-zmq.nobj.c +++ b/src/pre_generated-zmq.nobj.c @@ -2122,9 +2122,9 @@ static const char zmq_ffi_lua_code[] = "local ffi=require\"ffi\"\n" " local ctx1\n" " local p_type = type(ptr1)\n" " if p_type == 'userdata' then\n" -" ctx1 = ffi.cast('void *', ptr1);\n" -" elseif p_type == 'cdata' then\n" -" ctx1 = ptr1;\n" +" ctx1 = ffi.cast('ZMQ_Ctx *', ptr1);\n" +" elseif p_type == 'cdata' and ffi.istype('void *', ptr1) then\n" +" ctx1 = ffi.cast('ZMQ_Ctx *', ptr1);\n" " else\n" " return error(\"expected lightuserdata/cdata\");\n" " end\n" @@ -3295,9 +3295,16 @@ static int ZMQ_Ctx__term__meth(lua_State *L) { /* method: lightuserdata */ static int ZMQ_Ctx__lightuserdata__meth(lua_State *L) { - ZMQ_Ctx * this1 = obj_type_ZMQ_Ctx_check(L,1); void * ptr1 = NULL; - ptr1 = this1; + if(lua_isuserdata(L, 1)) { + ptr1 = lua_touserdata(L, 1); + } else { + /* check for LuaJIT's cdata. */ + int tp = lua_type(L, 1); + if(strncmp("cdata", lua_typename(L, tp), 5) == 0) { + ptr1 = *((void **)lua_topointer(L, 1)); + } + } lua_pushlightuserdata(L, ptr1); return 1;