pidgin: f748cb38: serv_got_joined_chat() emits "chat-joine...

khc at pidgin.im khc at pidgin.im
Mon Mar 3 02:10:45 EST 2008


-----------------------------------------------------------------
Revision: f748cb38c06ce37e27463caa86ada04e4f0c4b22
Ancestor: 1febcb1dfa6108b731759c97530273ad322c1e29
Author: khc at pidgin.im
Date: 2008-03-03T07:03:54
Branch: im.pidgin.pidgin
URL: http://d.pidgin.im/viewmtn/revision/info/f748cb38c06ce37e27463caa86ada04e4f0c4b22

Modified files:
        pidgin/plugins/notify.c

ChangeLog: 

serv_got_joined_chat() emits "chat-joined" but it also calls
purple_conversation_new() which emits "conversation-created", so attaching
to both signals would make create_conv and attach_signals to be called twice,
leaking the list of signal ids:

==30871== 67 (43 direct, 24 indirect) bytes in 3 blocks are definitely lost in loss record 94 of 265
==30871==    at 0x4006A6E: malloc (vg_replace_malloc.c:207)
==30871==    by 0xA1CAF5: g_malloc (in /lib/libglib-2.0.so.0.1400.6)
==30871==    by 0xA31B3A: g_slice_alloc (in /lib/libglib-2.0.so.0.1400.6)
==30871==    by 0xA32D9A: g_slist_append (in /lib/libglib-2.0.so.0.1400.6)
==30871==    by 0x4F1CA4A: attach_signals (notify.c:321)
==30871==    by 0x4F1CDCA: conv_created (notify.c:388)

Credit goes to Andrew Gaul for sending me this valgrind trace, blame me if
this breaks anything.


-------------- next part --------------
============================================================
--- pidgin/plugins/notify.c	4d1f95e3c8d56ebb6a02c83d148c954fc1bea5ed
+++ pidgin/plugins/notify.c	e3479c56f1ca38381b0ea3015619d5df937dc9ae
@@ -842,8 +842,6 @@ plugin_load(PurplePlugin *plugin)
 	                    PURPLE_CALLBACK(chat_sent_im), NULL);
 	purple_signal_connect(conv_handle, "conversation-created", plugin,
 	                    PURPLE_CALLBACK(conv_created), NULL);
-	purple_signal_connect(conv_handle, "chat-joined", plugin,
-	                    PURPLE_CALLBACK(conv_created), NULL);
 	purple_signal_connect(conv_handle, "deleting-conversation", plugin,
 	                    PURPLE_CALLBACK(deleting_conv), NULL);
 #if 0


More information about the Commits mailing list