summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJiří Klimeš <jklimes@redhat.com>2015-08-31 15:42:13 +0200
committerJiří Klimeš <jklimes@redhat.com>2015-08-31 15:53:14 +0200
commit0d0e84316f5db87b4909f09060c596dfe48a69e7 (patch)
tree989c97827e9a6b382ae98e15fb1047037fa0c389
parenta317477d699a295530dd384b952a698fbfb0f820 (diff)
downloadnetwork-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.c15
-rw-r--r--src/libnma/nma-ui-utils.c15
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;