# HG changeset patch # User Daniel Atallah # Date 1176431876 0 # Node ID ed2e53708b16d1ce53b44fa5ae76ab93c4efa321 # Parent 6dedf7542b445364585bbca447d2d74705155fed Fix Bug #125 (Perl plugins using timeouts not having timeouts unregistered when plugin unloaded) diff -r 6dedf7542b44 -r ed2e53708b16 libpurple/plugins/perl/perl-handlers.c --- a/libpurple/plugins/perl/perl-handlers.c Fri Apr 13 01:57:16 2007 +0000 +++ b/libpurple/plugins/perl/perl-handlers.c Fri Apr 13 02:37:56 2007 +0000 @@ -183,6 +183,9 @@ { timeout_handlers = g_list_remove(timeout_handlers, handler); + if (handler->iotag > 0) + g_source_remove(handler->iotag); + if (handler->callback != NULL) SvREFCNT_dec(handler->callback); @@ -207,7 +210,7 @@ g_free(handler); } -static int +static gboolean perl_timeout_cb(gpointer data) { PurplePerlTimeoutHandler *handler = (PurplePerlTimeoutHandler *)data; @@ -225,9 +228,12 @@ FREETMPS; LEAVE; + /* We're returning FALSE, so no need to manually remove the source */ + handler->iotag = 0; + destroy_timeout_handler(handler); - return 0; + return FALSE; } typedef void *DATATYPE;