[gnome-applets/wip/muktupavels/werror] charpick: fix -Wdiscarded-qualifiers warning



commit a6e9d084c26da6e852d8bdc5fe1acb75e8133b08
Author: Alberts Muktupāvels <alberts muktupavels gmail com>
Date:   Sat Apr 4 23:48:30 2020 +0300

    charpick: fix -Wdiscarded-qualifiers warning

 gnome-applets/charpick/charpick-applet.c | 60 ++++++++++++++++++++++----------
 gnome-applets/charpick/properties.c      | 10 ++++--
 2 files changed, 48 insertions(+), 22 deletions(-)
---
diff --git a/gnome-applets/charpick/charpick-applet.c b/gnome-applets/charpick/charpick-applet.c
index a0948e6b0..deb4fbd37 100644
--- a/gnome-applets/charpick/charpick-applet.c
+++ b/gnome-applets/charpick/charpick-applet.c
@@ -258,8 +258,10 @@ menuitem_activated (GtkMenuItem *menuitem, charpick_data *curr_data)
        string = g_object_get_data (G_OBJECT (menuitem), "string");
        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, KEY_CURRENT_LIST))
                g_settings_set_string (curr_data->settings, KEY_CURRENT_LIST, curr_data->charlist);
@@ -660,23 +662,30 @@ charpicker_applet_fill (charpick_data *curr_data)
   get_chartable (curr_data);
 
   string = g_settings_get_string (curr_data->settings, KEY_CURRENT_LIST);
-  if (string[0] != '\0') {
-       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[0] != '\0')
+    {
+      list = curr_data->chartable;
+
+      while (list)
+        {
+          if (g_ascii_strcasecmp (list->data, string) == 0)
+            {
+              g_free (curr_data->charlist);
+              curr_data->charlist = g_strdup (list->data);
+            }
+
+          list = g_list_next (list);
+        }
+
+      if (curr_data->charlist == NULL)
+        curr_data->charlist = g_strdup (string);
+    }
+  else
+    {
+      curr_data->charlist = g_strdup (curr_data->chartable->data);
+    }
+       g_free (string);
 
   orientation = gp_applet_get_orientation (GP_APPLET (curr_data));
   curr_data->panel_vertical = (orientation == GTK_ORIENTATION_VERTICAL);
@@ -763,6 +772,18 @@ charpick_applet_dispose (GObject *object)
   G_OBJECT_CLASS (charpick_applet_parent_class)->dispose (object);
 }
 
+static void
+charpick_applet_finalize (GObject *object)
+{
+  CharpickApplet *self;
+
+  self = CHARPICK_APPLET (object);
+
+  g_clear_pointer (&self->charlist, g_free);
+
+  G_OBJECT_CLASS (charpick_applet_parent_class)->finalize (object);
+}
+
 static void
 charpick_applet_class_init (CharpickAppletClass *self_class)
 {
@@ -772,6 +793,7 @@ charpick_applet_class_init (CharpickAppletClass *self_class)
 
   object_class->constructed = charpick_applet_constructed;
   object_class->dispose = charpick_applet_dispose;
+  object_class->finalize = charpick_applet_finalize;
 }
 
 static void
diff --git a/gnome-applets/charpick/properties.c b/gnome-applets/charpick/properties.c
index 3cf9babec..3f3707584 100644
--- a/gnome-applets/charpick/properties.c
+++ b/gnome-applets/charpick/properties.c
@@ -136,7 +136,8 @@ add_palette_cb (GtkDialog *dialog, int response_id, charpick_data *curr_data)
 
        if (curr_data->chartable == NULL) {
                curr_data->chartable = list;
-               curr_data->charlist = curr_data->chartable->data;
+               g_free (curr_data->charlist);
+               curr_data->charlist = g_strdup (curr_data->chartable->data);
                build_table (curr_data);
 
                if (g_settings_is_writable (curr_data->settings, KEY_CURRENT_LIST))
@@ -198,7 +199,9 @@ edit_palette_cb (GtkDialog *dialog, int response_id, charpick_data *curr_data)
        gtk_list_store_set (GTK_LIST_STORE (model), &iter, 0, new, 1, new, -1);
        
        if (g_ascii_strcasecmp (curr_data->charlist, charlist) == 0) {
-               curr_data->charlist = new;
+               g_free (curr_data->charlist);
+               curr_data->charlist = g_strdup (new);
+
                build_table (curr_data);
 
                if (g_settings_is_writable (curr_data->settings, KEY_CURRENT_LIST))
@@ -288,8 +291,9 @@ delete_palette (GtkButton *button, charpick_data *curr_data)
        curr_data->chartable = g_list_remove (curr_data->chartable, charlist);
        
        if (g_ascii_strcasecmp (curr_data->charlist, charlist) == 0) {
+               g_free (curr_data->charlist);
                curr_data->charlist = curr_data->chartable != NULL ? 
-                                     curr_data->chartable->data : "";
+                                     g_strdup (curr_data->chartable->data) : g_strdup ("");
                if (g_settings_is_writable (curr_data->settings, KEY_CURRENT_LIST))
                        g_settings_set_string (curr_data->settings, KEY_CURRENT_LIST, curr_data->charlist);
        }


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