diff -r e617c9cf6dd3 -r 90073cbb535d lm_message_handler.c --- a/lm_message_handler.c Mon Feb 16 01:32:12 2009 +0200 +++ b/lm_message_handler.c Fri Feb 20 23:07:43 2009 +0200 @@ -4,6 +4,7 @@ #include #include +#include "config.h" #include "lm_types.h" #include "util.h" @@ -25,7 +26,7 @@ llm_message_bless (cb->L, message); // XXX lm_message_unref (message); if (lua_pcall (cb->L, 2, 1, 0)) { - // XXX lua_error (cb->L); + E ("Message handler callback error: %s", lua_tostring (cb->L, -1)); lua_pop (cb->L, 1); return LM_HANDLER_RESULT_ALLOW_MORE_HANDLERS; } @@ -55,6 +56,7 @@ cb, (GDestroyNotify)llm_callback_destroy); llm_message_handler_bless (L, handler); lm_message_handler_unref (handler); // XXX + D ("Message handler %X created", (int) handler); return 1; } @@ -66,18 +68,18 @@ { luaL_argcheck (L, lua_islightuserdata (L, 1), 1, "loudmouth message handler pointer expected"); llm_message_handler_bless (L, lua_touserdata (L, 1)); - lua_remove (L, -2); return 1; } +// XXX: merge with next? /// message_handler:invalidate /// Invalidates handler. +/// R: lm message handler object static int llm_message_handler_invalidate (lua_State *L) { llm_message_handler_t *object = luaL_checklm_message_handler (L, 1); lm_message_handler_invalidate (object->message_handler); - lua_pop (L, 1); - return 0; + return 1; } /// message_handler:valid @@ -87,7 +89,6 @@ { llm_message_handler_t *object = luaL_checklm_message_handler (L, 1); lua_pushboolean (L, lm_message_handler_is_valid (object->message_handler)); - lua_remove (L, -2); return 1; } @@ -98,15 +99,14 @@ { llm_message_handler_t *object = luaL_checklm_message_handler (L, 1); lua_pushlightuserdata (L, object->message_handler); - lua_remove (L, -2); return 1; } static int llm_message_handler_gc (lua_State *L) { llm_message_handler_t *object = luaL_checklm_message_handler (L, 1); + D ("Message handler %X gc called", (int) object); lm_message_handler_unref (object->message_handler); - lua_pop (L, 1); return 0; }