From 14ae269f1f346ae727ccee0f68c458ad7f2bfed1 Mon Sep 17 00:00:00 2001 From: rbuj Date: Fri, 22 Oct 2021 12:48:19 +0200 Subject: [PATCH] gpm-statistics: fix memory leak --- src/gpm-statistics.c | 33 +++++++++++++++++++++++++++------ 1 file changed, 27 insertions(+), 6 deletions(-) diff --git a/src/gpm-statistics.c b/src/gpm-statistics.c index 897e6ec5..440ddaa5 100644 --- a/src/gpm-statistics.c +++ b/src/gpm-statistics.c @@ -874,7 +874,7 @@ gpm_stats_add_device (UpDevice *device, GPtrArray *devices) { const gchar *id; GtkTreeIter iter; - const gchar *icon; + char *icon; UpDeviceKind kind; gchar *label, *vendor, *model; @@ -905,6 +905,7 @@ gpm_stats_add_device (UpDevice *device, GPtrArray *devices) GPM_DEVICES_COLUMN_ID, id, GPM_DEVICES_COLUMN_TEXT, label, GPM_DEVICES_COLUMN_ICON, icon, -1); + g_free (icon); g_free (label); g_free (vendor); g_free (model); @@ -1334,16 +1335,36 @@ main (int argc, char *argv[]) gpm_stats_add_devices_columns (GTK_TREE_VIEW (widget)); gtk_tree_view_columns_autosize (GTK_TREE_VIEW (widget)); /* show */ - history_type = g_settings_get_string (settings, GPM_SETTINGS_INFO_HISTORY_TYPE); - history_time = g_settings_get_int (settings, GPM_SETTINGS_INFO_HISTORY_TIME); - if (history_type == NULL) + char *history_type_temp = g_settings_get_string (settings, GPM_SETTINGS_INFO_HISTORY_TYPE); + if ((history_type_temp == NULL) || (strcmp (history_type_temp, GPM_HISTORY_CHARGE_VALUE) == 0)) { history_type = GPM_HISTORY_CHARGE_VALUE; + } else if (strcmp (history_type_temp, GPM_HISTORY_RATE_VALUE) == 0) { + history_type = GPM_HISTORY_RATE_VALUE; + } else if (strcmp (history_type_temp, GPM_HISTORY_TIME_FULL_VALUE) == 0) { + history_type = GPM_HISTORY_TIME_FULL_VALUE; + } else if (strcmp (history_type_temp, GPM_HISTORY_TIME_EMPTY_VALUE) == 0) { + history_type = GPM_HISTORY_TIME_EMPTY_VALUE; + } else { + g_assert_not_reached (); + } + g_free (history_type_temp); + history_time = g_settings_get_int (settings, GPM_SETTINGS_INFO_HISTORY_TIME); if (history_time == 0) history_time = GPM_HISTORY_HOUR_VALUE; - stats_type = g_settings_get_string (settings, GPM_SETTINGS_INFO_STATS_TYPE); - if (stats_type == NULL) + char *stats_type_temp = g_settings_get_string (settings, GPM_SETTINGS_INFO_STATS_TYPE); + if ((stats_type_temp == NULL) || (strcmp (stats_type_temp, GPM_STATS_CHARGE_DATA_VALUE) == 0)) { stats_type = GPM_STATS_CHARGE_DATA_VALUE; + } else if (strcmp (stats_type_temp, GPM_STATS_DISCHARGE_DATA_VALUE) == 0) { + stats_type = GPM_STATS_DISCHARGE_DATA_VALUE; + } else if (strcmp (stats_type_temp, GPM_STATS_CHARGE_ACCURACY_VALUE) == 0) { + stats_type = GPM_STATS_CHARGE_ACCURACY_VALUE; + } else if (strcmp (stats_type_temp, GPM_STATS_DISCHARGE_ACCURACY_VALUE) == 0) { + stats_type = GPM_STATS_DISCHARGE_ACCURACY_VALUE; + } else { + g_assert_not_reached (); + } + g_free (stats_type_temp); widget = GTK_WIDGET (gtk_builder_get_object (builder, "combobox_history_type")); gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (widget), GPM_HISTORY_RATE_TEXT);