# HG changeset patch # User Matthew Wild # Date 1326687677 0 # Node ID f123677dd748ef5ed8a52640b95d0dc305501357 # Parent f937d449075d1d84a5773ba10b4ee02e95588c34 event_callback.c: Check for event being destroyed during callback diff -r f937d449075d -r f123677dd748 src/event_callback.c --- a/src/event_callback.c Mon Jan 16 01:53:45 2012 +0000 +++ b/src/event_callback.c Mon Jan 16 04:21:17 2012 +0000 @@ -24,16 +24,15 @@ int ret; double newTimeout = -1; assert(cb); - if(!cb->base) { - /* Callback has been collected... die */ - /* TODO: What should really be done here... */ - return; - } + if(!cb->base) + return; /* Event has already been collected + destroyed */ assert(cb->base->loop_L); L = cb->base->loop_L; lua_rawgeti(L, LUA_REGISTRYINDEX, cb->callbackRef); lua_pushinteger(L, event); lua_call(L, 1, 2); + if(!cb->base) + return; /* event was destroyed during callback */ ret = lua_tointeger(L, -2); if(lua_isnumber(L, -1)) { newTimeout = lua_tonumber(L, -1);