diff --git a/lualib/mqueue.lua b/lualib/mqueue.lua index 98a4b2bf..da7712af 100644 --- a/lualib/mqueue.lua +++ b/lualib/mqueue.lua @@ -34,9 +34,14 @@ local function message_dispatch(f) local msg = table.remove(message_queue,1) local session = msg.session if session == 0 then - if do_func(f, msg) ~= nil then - skynet.fork(message_dispatch,f) - error(string.format("[:%x] send a message to [:%x] return something", msg.addr, skynet.self())) + local ok, msg = do_func(f, msg) + if ok then + if msg then + skynet.fork(message_dispatch,f) + error(string.format("[:%x] send a message to [:%x] return something", msg.addr, skynet.self())) + end + else + error(string.format("[:%x] send a message to [:%x] throw an error : %s", msg.addr, skynet.self(),msg)) end else local data, size = skynet.pack(do_func(f,msg)) diff --git a/service-src/service_lua.c b/service-src/service_lua.c index bfb256a4..7339dbde 100644 --- a/service-src/service_lua.c +++ b/service-src/service_lua.c @@ -14,7 +14,8 @@ #include #include -#define PREALLOCMEM (1024 * 1024) +// define PREALLOCMEM to enable skynet defined alloc +//#define PREALLOCMEM (1024 * 1024) // time @@ -259,8 +260,8 @@ snlua_create(void) { void snlua_release(struct snlua *l) { - void * ud = NULL; #ifdef PREALLOCMEM + void * ud = NULL; lua_Alloc lalloc = lua_getallocf(l->L, &ud); assert(lalloc == skynet_lua_alloc); lua_close(l->L);