libpurple/plugins/perl/perl-handlers.c

branch
release-2.1.0
changeset 18165
fb6f9d0130aa
parent 17570
4cca2fc0ec83
child 19336
065a79d2d0e5
--- 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;

mercurial