From 71a3e400589bc037ecb043ed27ac255166722a1c Mon Sep 17 00:00:00 2001 From: rbuj Date: Fri, 8 Jan 2021 14:38:27 +0100 Subject: charpick: Fix memory leak --- charpick/charpick.c | 28 +++++++++------------------- 1 file changed, 9 insertions(+), 19 deletions(-) (limited to 'charpick/charpick.c') diff --git a/charpick/charpick.c b/charpick/charpick.c index 6991b34f..6f03e6b6 100644 --- a/charpick/charpick.c +++ b/charpick/charpick.c @@ -280,7 +280,9 @@ menuitem_activated (GtkMenuItem *menuitem, if (g_ascii_strcasecmp (curr_data->charlist, string) == 0) return; - curr_data->charlist = string; + g_free (curr_data->charlist); + curr_data->charlist = g_strdup (string); + build_table (curr_data); if (g_settings_is_writable (curr_data->settings, "current-list")) g_settings_set_string (curr_data->settings, @@ -653,6 +655,7 @@ applet_destroy (GtkWidget *widget, gtk_widget_destroy (curr_data->box); if (curr_data->menu) gtk_widget_destroy (curr_data->menu); + g_free (curr_data->charlist); g_free (curr_data); } @@ -727,7 +730,6 @@ charpicker_applet_fill (MatePanelApplet *applet) MatePanelAppletOrient orientation; charpick_data *curr_data; GdkAtom utf8_atom; - GList *list; gchar *string; GtkActionGroup *action_group; @@ -748,24 +750,12 @@ charpicker_applet_fill (MatePanelApplet *applet) get_chartable (curr_data); string = g_settings_get_string (curr_data->settings, "current-list"); - if (string) { - list = curr_data->chartable; - while (list) { - if (g_ascii_strcasecmp (list->data, string) == 0) - curr_data->charlist = list->data; - list = g_list_next (list); - } - /* FIXME: yeah leak, but this code is full of leaks and evil - point shuffling. This should really be rewritten - -George */ - if (curr_data->charlist == NULL) - curr_data->charlist = string; - else - g_free (string); - } - else { - curr_data->charlist = curr_data->chartable->data; + if (string && *string != '\0') { + curr_data->charlist = g_strdup (string); + } else { + curr_data->charlist = g_strdup (curr_data->chartable->data); } + g_free (string); curr_data->panel_size = mate_panel_applet_get_size (applet); -- cgit v1.2.1