aboutsummaryrefslogtreecommitdiffstats
path: root/mail/mail-account-gui.c
diff options
context:
space:
mode:
authorJon Trowbridge <trow@ximian.com>2001-06-07 05:09:20 +0800
committerJon Trowbridge <trow@src.gnome.org>2001-06-07 05:09:20 +0800
commitf15bb6a3ebcadfc4dbe8e9d2a2c82c98ac2da35a (patch)
tree24e03835f0e3216ded55b1b248efbb530367f75a /mail/mail-account-gui.c
parentc77b7e30202573c1c4ab54086388202d93181b45 (diff)
downloadgsoc2013-evolution-f15bb6a3ebcadfc4dbe8e9d2a2c82c98ac2da35a.tar.gz
gsoc2013-evolution-f15bb6a3ebcadfc4dbe8e9d2a2c82c98ac2da35a.tar.zst
gsoc2013-evolution-f15bb6a3ebcadfc4dbe8e9d2a2c82c98ac2da35a.zip
Check that the chain of deferences in gui->account->source->url is safe.
2001-06-06 Jon Trowbridge <trow@ximian.com> * mail-account-gui.c (source_type_changed): Check that the chain of deferences in gui->account->source->url is safe. This was causing a segfault when adding a new account if any of the existing accounts had their sources set to "None". (i.e. gui->account->source == NULL) * mail-accounts.c (load_accounts): Check that account->source != NULL before dereferencing it. (load_accounts): The selection is cleared when the account clist is rebuilt (say after a call to add), but no unselect event is emitted. Yes, the clist is evil. We work around this by explictly calling mail_unselect, our unselect signal handler. (Otherwise, the edit and delete buttons remain sensitive and accounts_row != 0, but the user can't see which row the dialog thinks is selected.) (load_news): Check the account->source != NULL before dereferencing it. (mail_unselect): If an insensitive button in a button box has the focus, and if you hit tab, there is a segfault deep inside of gtk. This is probably a gtk bug. We work around it by having the add button (which is always sensitive) grab the focus on an unselect. svn path=/trunk/; revision=10136
Diffstat (limited to 'mail/mail-account-gui.c')
-rw-r--r--mail/mail-account-gui.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/mail/mail-account-gui.c b/mail/mail-account-gui.c
index 74150adace..557bc49817 100644
--- a/mail/mail-account-gui.c
+++ b/mail/mail-account-gui.c
@@ -184,7 +184,7 @@ source_type_changed (GtkWidget *widget, gpointer user_data)
MailAccountGui *gui = user_data;
GtkWidget *label, *frame, *dwidget = NULL;
CamelProvider *provider;
-
+
provider = gtk_object_get_data (GTK_OBJECT (widget), "provider");
gui->source.provider = provider;
@@ -195,6 +195,7 @@ source_type_changed (GtkWidget *widget, gpointer user_data)
/* hostname */
label = glade_xml_get_widget (gui->xml, "source_host_label");
+
if (CAMEL_PROVIDER_ALLOWS (provider, CAMEL_URL_PART_HOST)) {
dwidget = GTK_WIDGET (gui->source.hostname);
gtk_widget_show (GTK_WIDGET (gui->source.hostname));
@@ -206,6 +207,7 @@ source_type_changed (GtkWidget *widget, gpointer user_data)
/* username */
label = glade_xml_get_widget (gui->xml, "source_user_label");
+
if (CAMEL_PROVIDER_ALLOWS (provider, CAMEL_URL_PART_USER)) {
if (!dwidget)
dwidget = GTK_WIDGET (gui->source.username);
@@ -218,6 +220,7 @@ source_type_changed (GtkWidget *widget, gpointer user_data)
/* path */
label = glade_xml_get_widget (gui->xml, "source_path_label");
+
if (CAMEL_PROVIDER_ALLOWS (provider, CAMEL_URL_PART_PATH)) {
if (!dwidget)
dwidget = GTK_WIDGET (gui->source.path);
@@ -271,8 +274,8 @@ source_type_changed (GtkWidget *widget, gpointer user_data)
if (dwidget)
gtk_widget_grab_focus (dwidget);
-
- mail_account_gui_build_extra_conf (gui, gui->account->source->url);
+
+ mail_account_gui_build_extra_conf (gui, gui && gui->account && gui->account->source ? gui->account->source->url : NULL);
}