gossip r2769 - in trunk: . src



Author: mr
Date: Fri Mar 14 17:26:08 2008
New Revision: 2769
URL: http://svn.gnome.org/viewvc/gossip?rev=2769&view=rev

Log:
Don't crash when GossipAccountChooser returns a NULL account


Modified:
   trunk/ChangeLog
   trunk/src/gossip-account-chooser.c
   trunk/src/gossip-add-contact-dialog.c
   trunk/src/gossip-log-window.c
   trunk/src/gossip-new-chatroom-dialog.c
   trunk/src/gossip-vcard-dialog.c

Modified: trunk/src/gossip-account-chooser.c
==============================================================================
--- trunk/src/gossip-account-chooser.c	(original)
+++ trunk/src/gossip-account-chooser.c	Fri Mar 14 17:26:08 2008
@@ -594,7 +594,7 @@
 gossip_account_chooser_get_account (GossipAccountChooser *account_chooser)
 {
 	GossipAccountChooserPriv *priv;
-	GossipAccount            *account;
+	GossipAccount            *account = NULL;
 	GtkTreeModel             *model;
 	GtkTreeIter               iter;
 
@@ -603,9 +603,9 @@
 	priv = GET_PRIV (account_chooser);
 
 	model = gtk_combo_box_get_model (GTK_COMBO_BOX (account_chooser));
-	gtk_combo_box_get_active_iter (GTK_COMBO_BOX (account_chooser), &iter);
-
-	gtk_tree_model_get (model, &iter, COL_ACCOUNT_POINTER, &account, -1);
+	if (gtk_combo_box_get_active_iter (GTK_COMBO_BOX (account_chooser), &iter)) {
+		gtk_tree_model_get (model, &iter, COL_ACCOUNT_POINTER, &account, -1);
+	}
 
 	return account;
 }

Modified: trunk/src/gossip-add-contact-dialog.c
==============================================================================
--- trunk/src/gossip-add-contact-dialog.c	(original)
+++ trunk/src/gossip-add-contact-dialog.c	Fri Mar 14 17:26:08 2008
@@ -192,6 +192,10 @@
 	account_chooser = GOSSIP_ACCOUNT_CHOOSER (dialog->account_chooser);
 	account = gossip_account_chooser_get_account (account_chooser);
 
+	if (!account) {
+		return FALSE;
+	}
+
 	/* Make sure we aren't looking up the same ID or the example */
 	id = gtk_entry_get_text (GTK_ENTRY (dialog->entry_id));
 	example = gossip_jid_get_example_string ();
@@ -242,15 +246,10 @@
 add_contact_dialog_account_chooser_changed_cb (GtkWidget              *account_chooser,
 					       GossipAddContactDialog *dialog)
 {
-	GossipAccount *account;
-	const gchar   *example;
-
-	account = gossip_account_chooser_get_account (GOSSIP_ACCOUNT_CHOOSER (account_chooser));
+	const gchar *example;
 
 	example = gossip_jid_get_example_string ();
 	gtk_entry_set_text (GTK_ENTRY (dialog->entry_id), example);
-	
-	g_object_unref (account);
 }
 
 static void
@@ -333,15 +332,17 @@
 		account_chooser = GOSSIP_ACCOUNT_CHOOSER (dialog->account_chooser);
 		account = gossip_account_chooser_get_account (account_chooser);
 
-		id = gtk_entry_get_text (GTK_ENTRY (dialog->entry_id));
-		name = gtk_entry_get_text (GTK_ENTRY (dialog->entry_alias));
-		group = gtk_entry_get_text (GTK_ENTRY (dialog->entry_group));
-
-		gossip_session_add_contact (gossip_app_get_session (),
-					    account,
-					    id, name, group, message);
-
-		g_object_unref (account);
+		if (account) {
+			id = gtk_entry_get_text (GTK_ENTRY (dialog->entry_id));
+			name = gtk_entry_get_text (GTK_ENTRY (dialog->entry_alias));
+			group = gtk_entry_get_text (GTK_ENTRY (dialog->entry_group));
+			
+			gossip_session_add_contact (gossip_app_get_session (),
+						    account,
+						    id, name, group, message);
+			
+			g_object_unref (account);
+		}
 	}
 
 	gtk_widget_destroy (dialog->dialog);

Modified: trunk/src/gossip-log-window.c
==============================================================================
--- trunk/src/gossip-log-window.c	(original)
+++ trunk/src/gossip-log-window.c	Fri Mar 14 17:26:08 2008
@@ -779,6 +779,10 @@
 	selection = gtk_tree_view_get_selection (view);
 	store = GTK_LIST_STORE (model);
 
+	if (!account) {
+		return;
+	}
+
 	/* Block signals to stop the logs being retrieved prematurely */
 	g_signal_handlers_block_by_func (selection,
 					 log_window_contacts_changed_cb,
@@ -1369,6 +1373,10 @@
 	selection = gtk_tree_view_get_selection (view);
 	store = GTK_LIST_STORE (model);
 
+	if (!account) {
+		return;
+	}
+
 	/* Block signals to stop the logs being retrieved prematurely */
 	g_signal_handlers_block_by_func (selection,
 					 log_window_chatrooms_changed_cb,
@@ -1859,6 +1867,10 @@
 
 	gtk_list_store_clear (store);
 
+	if (!account) {
+		return;
+	}
+
 	gossip_debug (DEBUG_DOMAIN, "Getting links for %s%s...", 
 		      account ? "account " : "ALL accounts ",
 		      account ? gossip_account_get_name (account) : "");

Modified: trunk/src/gossip-new-chatroom-dialog.c
==============================================================================
--- trunk/src/gossip-new-chatroom-dialog.c	(original)
+++ trunk/src/gossip-new-chatroom-dialog.c	Fri Mar 14 17:26:08 2008
@@ -159,8 +159,6 @@
 static void
 new_chatroom_dialog_update_buttons (GossipNewChatroomDialog *dialog)
 {
-	GossipAccount        *account;
-	GossipAccountChooser *account_chooser;
 	GtkButton            *button;
 	GtkWidget            *image;
 	GList                *chatrooms;
@@ -176,10 +174,6 @@
 	const gchar          *room;
 	const gchar          *nick;
 
-	/* Get account information */
-	account_chooser = GOSSIP_ACCOUNT_CHOOSER (dialog->account_chooser);
-	account = gossip_account_chooser_get_account (account_chooser);
-
 	/* Sort out Join button. */
 	button = GTK_BUTTON (dialog->button_join);
 	
@@ -245,12 +239,6 @@
 static void
 new_chatroom_dialog_update_widgets (GossipNewChatroomDialog *dialog)
 {
-	GossipAccount        *account;
-	GossipAccountChooser *account_chooser;
-	
-	account_chooser = GOSSIP_ACCOUNT_CHOOSER (dialog->account_chooser);
-	account = gossip_account_chooser_get_account (account_chooser);
-
 	new_chatroom_dialog_set_defaults (dialog);
 	new_chatroom_dialog_update_buttons (dialog);
 
@@ -661,6 +649,10 @@
 	account_chooser = GOSSIP_ACCOUNT_CHOOSER (dialog->account_chooser);
 	account = gossip_account_chooser_get_account (account_chooser);
 
+	if (!account) {
+		return;
+	}
+	
 	nick = gossip_session_get_nickname (session, account);
 	if (nick) {
 		gtk_entry_set_text (GTK_ENTRY (dialog->entry_nick), nick);
@@ -718,6 +710,10 @@
 	account_chooser = GOSSIP_ACCOUNT_CHOOSER (dialog->account_chooser);
 	account = gossip_account_chooser_get_account (account_chooser);
 
+	if (!account) {
+		return;
+	}
+
 	provider = gossip_session_get_chatroom_provider (session, account);
 
 	/* Options */
@@ -880,6 +876,10 @@
 
 	account_chooser = GOSSIP_ACCOUNT_CHOOSER (dialog->account_chooser);
 	account = gossip_account_chooser_get_account (account_chooser);
+	
+	if (!account) {
+		return;
+	}
 
 	provider = gossip_session_get_chatroom_provider (session, account);
 
@@ -925,6 +925,10 @@
 	account_chooser = GOSSIP_ACCOUNT_CHOOSER (dialog->account_chooser);
 	account = gossip_account_chooser_get_account (account_chooser);
 
+	if (!account) {
+		return;
+	}
+
 	provider = gossip_session_get_chatroom_provider (session, account);
 	
 	/* FIXME: NEED API Here */

Modified: trunk/src/gossip-vcard-dialog.c
==============================================================================
--- trunk/src/gossip-vcard-dialog.c	(original)
+++ trunk/src/gossip-vcard-dialog.c	Fri Mar 14 17:26:08 2008
@@ -166,6 +166,10 @@
 	account_chooser = GOSSIP_ACCOUNT_CHOOSER (dialog->account_chooser);
 	account = gossip_account_chooser_get_account (account_chooser);
 
+	if (!account) {
+		return;
+	}
+
 	gossip_session_get_avatar_requirements (gossip_app_get_session (),
 						account,
 						&min_width, &min_height,
@@ -594,6 +598,10 @@
 	account_chooser = GOSSIP_ACCOUNT_CHOOSER (dialog->account_chooser);
 	account = gossip_account_chooser_get_account (account_chooser);
 
+	if (!account) {
+		return;
+	}
+
 	dialog->requesting_vcard = TRUE;
 
 	gossip_session_get_vcard (session,



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]