From 6f5c49661f3aab6ba6f0b80d125340ab87e1ebc6 Mon Sep 17 00:00:00 2001 From: Kim Alvefur Date: Thu, 25 Apr 2013 22:57:36 +0200 Subject: [PATCH] event_callback: Fix segmentation fault If an event is closed and an error occurs in the same callback, it would cause a segfault due to cb->base being NULL --- src/event_callback.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/event_callback.c b/src/event_callback.c index 494fba2..f5ad7cb 100644 --- a/src/event_callback.c +++ b/src/event_callback.c @@ -30,10 +30,12 @@ void luaevent_callback(int fd, short event, void* p) { L = cb->base->loop_L; lua_rawgeti(L, LUA_REGISTRYINDEX, cb->callbackRef); lua_pushinteger(L, event); + /* cb->base may be NULL after the pcall, if the event is destroyed */ + le_base* base = cb->base; if(lua_pcall(L, 1, 2, 0)) { - cb->base->errorMessage = luaL_ref(L, LUA_REGISTRYINDEX); - event_base_loopbreak(cb->base->base); + base->errorMessage = luaL_ref(L, LUA_REGISTRYINDEX); + event_base_loopbreak(base->base); lua_pop(L, 1); return; } -- 2.11.4.GIT