# HG changeset patch # User Sadrul Habib Chowdhury # Date 1181722026 0 # Node ID 662564beb575743bf4cffbf906cd91962f0d5ef7 # Parent 7e0bd339533c2c046c4fff7d17a414cefd6a8c2f Make timeout-callbacks behave like they would in C plugins (ie. the callback is not removed until it returns FALSE). diff -r 7e0bd339533c -r 662564beb575 libpurple/plugins/perl/perl-handlers.c --- a/libpurple/plugins/perl/perl-handlers.c Tue Jun 12 21:25:56 2007 +0000 +++ b/libpurple/plugins/perl/perl-handlers.c Wed Jun 13 08:07:06 2007 +0000 @@ -214,6 +214,7 @@ perl_timeout_cb(gpointer data) { PurplePerlTimeoutHandler *handler = (PurplePerlTimeoutHandler *)data; + gboolean ret = FALSE; dSP; ENTER; @@ -224,16 +225,16 @@ call_sv(handler->callback, G_EVAL | G_SCALAR); SPAGAIN; + ret = POPi; + PUTBACK; FREETMPS; LEAVE; - /* We're returning FALSE, so no need to manually remove the source */ - handler->iotag = 0; + if (ret == FALSE) + destroy_timeout_handler(handler); - destroy_timeout_handler(handler); - - return FALSE; + return ret; } typedef void *DATATYPE;