diff options
author | Jiří Klimeš <jklimes@redhat.com> | 2015-08-31 15:42:13 +0200 |
---|---|---|
committer | Jiří Klimeš <jklimes@redhat.com> | 2015-08-31 15:53:14 +0200 |
commit | 0d0e84316f5db87b4909f09060c596dfe48a69e7 (patch) | |
tree | 989c97827e9a6b382ae98e15fb1047037fa0c389 | |
parent | a317477d699a295530dd384b952a698fbfb0f820 (diff) | |
download | network-manager-applet-0d0e84316f5db87b4909f09060c596dfe48a69e7.tar.gz |
libnma/libnm-gtk: fix a possible crash on widgets destroy (rh #1254043)
https://bugzilla.redhat.com/show_bug.cgi?id=1254043
-rw-r--r-- | src/libnm-gtk/nm-ui-utils.c | 15 | ||||
-rw-r--r-- | src/libnma/nma-ui-utils.c | 15 |
2 files changed, 12 insertions, 18 deletions
diff --git a/src/libnm-gtk/nm-ui-utils.c b/src/libnm-gtk/nm-ui-utils.c index 5987b216..3596e62b 100644 --- a/src/libnm-gtk/nm-ui-utils.c +++ b/src/libnm-gtk/nm-ui-utils.c @@ -728,13 +728,13 @@ typedef struct { } PopupMenuItemInfo; static void -popup_menu_item_info_destroy (gpointer data) +popup_menu_item_info_destroy (gpointer data, GClosure *closure) { PopupMenuItemInfo *info = (PopupMenuItemInfo *) data; if (info->setting) g_object_unref (info->setting); - g_slice_free (PopupMenuItemInfo, data); + g_slice_free (PopupMenuItemInfo, info); } static void @@ -822,11 +822,8 @@ nma_utils_setup_password_storage (GtkWidget *passwd_entry, if (with_not_required) gtk_menu_shell_append (GTK_MENU_SHELL (popup_menu), item[3]); - if (setting) - g_object_ref (setting); - info = g_slice_new0 (PopupMenuItemInfo); - info->setting = setting; + info->setting = setting ? g_object_ref (setting) : NULL; info->password_flags_name = password_flags_name; info->item_number = ITEM_STORAGE_USER; info->passwd_entry = passwd_entry; @@ -836,7 +833,7 @@ nma_utils_setup_password_storage (GtkWidget *passwd_entry, (GClosureNotify) popup_menu_item_info_destroy, 0); info = g_slice_new0 (PopupMenuItemInfo); - info->setting = setting; + info->setting = setting ? g_object_ref (setting) : NULL; info->password_flags_name = password_flags_name; info->item_number = ITEM_STORAGE_SYSTEM; info->passwd_entry = passwd_entry; @@ -846,7 +843,7 @@ nma_utils_setup_password_storage (GtkWidget *passwd_entry, (GClosureNotify) popup_menu_item_info_destroy, 0); info = g_slice_new0 (PopupMenuItemInfo); - info->setting = setting; + info->setting = setting ? g_object_ref (setting) : NULL; info->password_flags_name = password_flags_name; info->item_number = ITEM_STORAGE_ASK; info->passwd_entry = passwd_entry; @@ -858,7 +855,7 @@ nma_utils_setup_password_storage (GtkWidget *passwd_entry, if (with_not_required) { info = g_slice_new0 (PopupMenuItemInfo); - info->setting = setting; + info->setting = setting ? g_object_ref (setting) : NULL; info->password_flags_name = password_flags_name; info->item_number = ITEM_STORAGE_UNUSED; info->passwd_entry = passwd_entry; diff --git a/src/libnma/nma-ui-utils.c b/src/libnma/nma-ui-utils.c index eea8e3d7..18e1f60f 100644 --- a/src/libnma/nma-ui-utils.c +++ b/src/libnma/nma-ui-utils.c @@ -163,13 +163,13 @@ typedef struct { } PopupMenuItemInfo; static void -popup_menu_item_info_destroy (gpointer data) +popup_menu_item_info_destroy (gpointer data, GClosure *closure) { PopupMenuItemInfo *info = (PopupMenuItemInfo *) data; if (info->setting) g_object_unref (info->setting); - g_slice_free (PopupMenuItemInfo, data); + g_slice_free (PopupMenuItemInfo, info); } static void @@ -257,11 +257,8 @@ nma_utils_setup_password_storage (GtkWidget *passwd_entry, if (with_not_required) gtk_menu_shell_append (GTK_MENU_SHELL (popup_menu), item[3]); - if (setting) - g_object_ref (setting); - info = g_slice_new0 (PopupMenuItemInfo); - info->setting = setting; + info->setting = setting ? g_object_ref (setting) : NULL; info->password_flags_name = password_flags_name; info->item_number = ITEM_STORAGE_USER; info->passwd_entry = passwd_entry; @@ -271,7 +268,7 @@ nma_utils_setup_password_storage (GtkWidget *passwd_entry, (GClosureNotify) popup_menu_item_info_destroy, 0); info = g_slice_new0 (PopupMenuItemInfo); - info->setting = setting; + info->setting = setting ? g_object_ref (setting) : NULL; info->password_flags_name = password_flags_name; info->item_number = ITEM_STORAGE_SYSTEM; info->passwd_entry = passwd_entry; @@ -281,7 +278,7 @@ nma_utils_setup_password_storage (GtkWidget *passwd_entry, (GClosureNotify) popup_menu_item_info_destroy, 0); info = g_slice_new0 (PopupMenuItemInfo); - info->setting = setting; + info->setting = setting ? g_object_ref (setting) : NULL; info->password_flags_name = password_flags_name; info->item_number = ITEM_STORAGE_ASK; info->passwd_entry = passwd_entry; @@ -293,7 +290,7 @@ nma_utils_setup_password_storage (GtkWidget *passwd_entry, if (with_not_required) { info = g_slice_new0 (PopupMenuItemInfo); - info->setting = setting; + info->setting = setting ? g_object_ref (setting) : NULL; info->password_flags_name = password_flags_name; info->item_number = ITEM_STORAGE_UNUSED; info->passwd_entry = passwd_entry; |