/soc/2015/jgeboski/facebook: 8cf22d7f1c83: facebook: fixed a sle...

James Geboski <[email protected]>
Newsgroups gmane.comp.gnome.gaim.cvs
Message-ID <[email protected]>
Changeset: 8cf22d7f1c83b725e5b98665fc4df5a02708dfbd
Author:	 James Geboski <[email protected]>
Date:	 2015-08-07 18:35 -0400
Branch:	 facebook
URL: https://hg.pidgin.im/soc/2015/jgeboski/facebook/rev/8cf22d7f1c83

Description:

facebook: fixed a slew of issues with room lists

This addresses:
  - Canceled requests leading to warnings spewing
  - Doubly freeing the PurpleRoomlist
  - More than one PurpleRoomlist leaking
  - Progress always being FALSE

diffstat:

 libpurple/protocols/facebook/data.c     |   4 ----
 libpurple/protocols/facebook/facebook.c |  10 ++++++++++
 2 files changed, 10 insertions(+), 4 deletions(-)

diffs (55 lines):

diff --git a/libpurple/protocols/facebook/data.c b/libpurple/protocols/facebook/data.c
--- a/libpurple/protocols/facebook/data.c
+++ b/libpurple/protocols/facebook/data.c
@@ -57,10 +57,6 @@ fb_data_dispose(GObject *obj)
 		g_object_unref(priv->api);
 	}
 
-	if (priv->roomlist != NULL) {
-		g_object_unref(priv->roomlist);
-	}
-
 	g_hash_table_destroy(priv->icons);
 	g_hash_table_destroy(priv->icona);
 }
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
@@ -369,6 +369,11 @@ fb_cb_api_thread_list(FbApi *api, GSList
 	PurpleRoomlistRoom *room;
 
 	list = fb_data_get_roomlist(fata);
+
+	if (G_UNLIKELY(list == NULL)) {
+		return;
+	}
+
 	gstr = g_string_new(NULL);
 
 	for (l = thrds; l != NULL; l = l->next) {
@@ -394,6 +399,7 @@ fb_cb_api_thread_list(FbApi *api, GSList
 	}
 
 	purple_roomlist_set_in_progress(list, FALSE);
+	fb_data_set_roomlist(fata, NULL);
 	g_string_free(gstr, TRUE);
 }
 
@@ -852,6 +858,9 @@ fb_roomlist_get_list(PurpleConnection *g
 	PurpleRoomlistField *fld;
 
 	fata = purple_connection_get_protocol_data(gc);
+	list = fb_data_get_roomlist(fata);
+	g_return_val_if_fail(list == NULL, NULL);
+
 	api = fb_data_get_api(fata);
 	acct = purple_connection_get_account(gc);
 	list = purple_roomlist_new(acct);
@@ -868,6 +877,7 @@ fb_roomlist_get_list(PurpleConnection *g
 	flds = g_list_reverse(flds);
 	purple_roomlist_set_fields(list, flds);
 
+	purple_roomlist_set_in_progress(list, TRUE);
 	fb_api_thread_list(api);
 	return list;
 }

_______________________________________________
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.