/soc/2015/jgeboski/facebook: ee2afb768c6e: facebook: fixed segfa...

James Geboski <[email protected]>
Newsgroups gmane.comp.gnome.gaim.cvs
Message-ID <[email protected]>
Changeset: ee2afb768c6e73bd9dff28d97d09ae3c2d30fdd1
Author:	 James Geboski <[email protected]>
Date:	 2015-08-15 20:30 -0400
Branch:	 facebook
URL: https://hg.pidgin.im/soc/2015/jgeboski/facebook/rev/ee2afb768c6e

Description:

facebook: fixed segfault when marking conversations as read

diffstat:

 libpurple/protocols/facebook/facebook.c |  31 ++++++++++++++++++++++++++++---
 1 files changed, 28 insertions(+), 3 deletions(-)

diffs (74 lines):

diff --git a/libpurple/protocols/facebook/facebook.c b/libpurple/protocols/facebook/facebook.c
--- a/libpurple/protocols/facebook/facebook.c
+++ b/libpurple/protocols/facebook/facebook.c
@@ -644,6 +644,7 @@ fb_cb_conv_read(gpointer data)
 	FbApi *api;
 	FbData *fata;
 	FbId id;
+	gchar *tname;
 	PurpleConnection *gc;
 	PurpleConversation *conv = data;
 
@@ -652,7 +653,9 @@ fb_cb_conv_read(gpointer data)
 	name = purple_conversation_get_name(conv);
 	id = FB_ID_FROM_STR(name);
 
-	fb_data_clear_timeout(fata, "conv-read", FALSE);
+	tname = g_strconcat("conv-read-", name, NULL);
+	fb_data_clear_timeout(fata, tname, FALSE);
+	g_free(tname);
 
 	if (!purple_conversation_has_focus(conv) ||
 	    !fb_data_get_unread(fata, id))
@@ -670,7 +673,9 @@ static void
 fb_cb_conv_updated(PurpleConversation *conv, PurpleConversationUpdateType type,
                    gpointer data)
 {
+	const gchar *name;
 	FbData *fata = data;
+	gchar *tname;
 	PurpleAccount *acct;
 
 	acct = purple_conversation_get_account(conv);
@@ -679,12 +684,27 @@ fb_cb_conv_updated(PurpleConversation *c
 	    purple_account_get_bool(acct, "mark-read", TRUE))
 	{
 		/* Use event loop for purple_conversation_has_focus() */
-		fb_data_add_timeout(fata, "conv-read", 1, fb_cb_conv_read,
-		                    conv);
+		name = purple_conversation_get_name(conv);
+		tname = g_strconcat("conv-read-", name, NULL);
+		fb_data_add_timeout(fata, tname, 1, fb_cb_conv_read, conv);
+		g_free(tname);
 	}
 }
 
 static void
+fb_cb_conv_deleting(PurpleConversation *conv, gpointer data)
+{
+	const gchar *name;
+	FbData *fata = data;
+	gchar *tname;
+
+	name = purple_conversation_get_name(conv);
+	tname = g_strconcat("conv-read-", name, NULL);
+	fb_data_clear_timeout(fata, tname, TRUE);
+	g_free(tname);
+}
+
+static void
 fb_blist_chat_create(GSList *buddies, gpointer data)
 {
 	const gchar *name;
@@ -825,6 +845,11 @@ fb_login(PurpleAccount *acct)
 	                      gc,
 	                      G_CALLBACK(fb_cb_conv_updated),
 	                      fata);
+	purple_signal_connect(convh,
+	                      "deleting-conversation",
+	                      gc,
+	                      G_CALLBACK(fb_cb_conv_deleting),
+	                      fata);
 
 	if (!fb_data_load(fata)) {
 		user = purple_account_get_username(acct);

_______________________________________________
Commits mailing list
[email protected]
https://pidgin.im/cgi-bin/mailman/listinfo/commits
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.