From 58a64323c492b0e46cf25951bbebcccfed1c3da3 Mon Sep 17 00:00:00 2001 From: Robert Ancell Date: Tue, 29 May 2018 12:20:38 +1200 Subject: [PATCH] search: Use g_auto for variables --- panels/search/cc-search-locations-dialog.c | 135 +++++++-------------- panels/search/cc-search-panel.c | 121 +++++++----------- 2 files changed, 89 insertions(+), 167 deletions(-) diff --git a/panels/search/cc-search-locations-dialog.c b/panels/search/cc-search-locations-dialog.c index 132754722..2959e3b0f 100644 --- a/panels/search/cc-search-locations-dialog.c +++ b/panels/search/cc-search-locations-dialog.c @@ -87,35 +87,24 @@ place_free (Place * p) g_slice_free (Place, p); } +G_DEFINE_AUTOPTR_CLEANUP_FUNC (Place, place_free) + static GList * get_bookmarks (void) { - GFile *file; - gchar *contents; - gchar *path; - gchar **lines; - GList *bookmarks; + g_autoptr(GFile) file = NULL; + g_autofree gchar *contents = NULL; + g_autofree gchar *path = NULL; + GList *bookmarks = NULL; GError *error = NULL; path = g_build_filename (g_get_user_config_dir (), "gtk-3.0", "bookmarks", NULL); file = g_file_new_for_path (path); - g_free (path); - - contents = NULL; - g_file_load_contents (file, NULL, &contents, NULL, NULL, &error); - g_object_unref (file); - - bookmarks = NULL; - lines = NULL; - - if (error != NULL) - { - g_error_free (error); - } - else + if (g_file_load_contents (file, NULL, &contents, NULL, NULL, &error)) { gint idx; + g_auto(GStrv) lines = NULL; lines = g_strsplit (contents, "\n", -1); for (idx = 0; lines[idx]; idx++) @@ -151,9 +140,6 @@ get_bookmarks (void) } } - g_strfreev (lines); - g_free (contents); - return g_list_reverse (bookmarks); } @@ -259,7 +245,7 @@ path_from_tracker_dir (const gchar *value) static GList * get_tracker_locations (void) { - gchar **locations; + g_auto(GStrv) locations = NULL; GList *list; gint idx; Place *location; @@ -280,16 +266,17 @@ get_tracker_locations (void) list = g_list_prepend (list, location); } - g_strfreev (locations); - return g_list_reverse (list); } static GList * get_places_list (void) { - GList *list, *l; - GHashTable *places; + g_autoptr(GList) xdg_list = NULL; + g_autoptr(GList) tracker_list = NULL; + g_autoptr(GList) bookmark_list = NULL; + GList *l; + g_autoptr(GHashTable) places = NULL; Place *place, *old_place; GList *places_list; @@ -303,53 +290,45 @@ get_places_list (void) g_hash_table_insert (places, place->location, place); /* first, load the XDG dirs */ - list = get_xdg_dirs (); - for (l = list; l != NULL; l = l->next) + xdg_list = get_xdg_dirs (); + for (l = xdg_list; l != NULL; l = l->next) { place = l->data; g_hash_table_insert (places, place->location, place); } - g_list_free (list); /* then, insert all the tracker locations that are not XDG dirs */ - list = get_tracker_locations (); - for (l = list; l != NULL; l = l->next) + tracker_list = get_tracker_locations (); + for (l = tracker_list; l != NULL; l = l->next) { - place = l->data; - old_place = g_hash_table_lookup (places, place->location); + g_autoptr(Place) p = l->data; + old_place = g_hash_table_lookup (places, p->location); if (old_place == NULL) - g_hash_table_insert (places, place->location, place); - else - place_free (place); + g_hash_table_insert (places, p->location, g_steal_pointer (&p)); } - g_list_free (list); /* finally, load bookmarks, and possibly update attributes */ - list = get_bookmarks (); - for (l = list; l != NULL; l = l->next) + bookmark_list = get_bookmarks (); + for (l = bookmark_list; l != NULL; l = l->next) { - place = l->data; - old_place = g_hash_table_lookup (places, place->location); + g_autoptr(Place) p = l->data; + old_place = g_hash_table_lookup (places, p->location); if (old_place == NULL) { - g_hash_table_insert (places, place->location, place); + g_hash_table_insert (places, p->location, g_steal_pointer (&p)); } else { g_free (old_place->display_name); - old_place->display_name = g_strdup (place->display_name); + old_place->display_name = g_strdup (p->display_name); if (old_place->place_type == PLACE_OTHER) old_place->place_type = PLACE_BOOKMARKS; - - place_free (place); } } - g_list_free (list); places_list = g_hash_table_get_values (places); g_hash_table_steal_all (places); - g_hash_table_unref (places); return places_list; } @@ -360,7 +339,7 @@ switch_tracker_get_mapping (GValue *value, gpointer user_data) { Place *place = user_data; - const gchar **locations; + g_autofree const gchar **locations = NULL; GFile *location; gint idx; gboolean found; @@ -377,8 +356,6 @@ switch_tracker_get_mapping (GValue *value, break; } - g_free (locations); - g_value_set_boolean (value, found); return TRUE; } @@ -387,8 +364,8 @@ static GPtrArray * place_get_new_settings_values (Place *place, gboolean remove) { - gchar **values; - gchar *path; + g_auto(GStrv) values = NULL; + g_autofree gchar *path = NULL; GPtrArray *new_values; const gchar *tracker_dir; gboolean found; @@ -419,9 +396,6 @@ place_get_new_settings_values (Place *place, g_ptr_array_add (new_values, NULL); - g_strfreev (values); - g_free (path); - return new_values; } @@ -431,17 +405,12 @@ switch_tracker_set_mapping (const GValue *value, gpointer user_data) { Place *place = user_data; - GPtrArray *new_values; + g_autoptr(GPtrArray) new_values = NULL; gboolean remove; - GVariant *variant; remove = !g_value_get_boolean (value); new_values = place_get_new_settings_values (place, remove); - variant = g_variant_new_strv ((const gchar **) new_values->pdata, -1); - - g_ptr_array_unref (new_values); - - return variant; + return g_variant_new_strv ((const gchar **) new_values->pdata, -1); } static void @@ -451,8 +420,8 @@ place_query_info_ready (GObject *source, { GtkWidget *row, *box, *w; Place *place; - GFileInfo *info; - gchar *path; + g_autoptr(GFileInfo) info = NULL; + g_autofree gchar *path = NULL; info = g_file_query_info_finish (G_FILE (source), res, NULL); if (!info) @@ -470,8 +439,6 @@ place_query_info_ready (GObject *source, else place->settings_key = TRACKER_KEY_RECURSIVE_DIRECTORIES; - g_free (path); - w = gtk_label_new (place->display_name); gtk_container_add (GTK_CONTAINER (box), w); @@ -486,7 +453,6 @@ place_query_info_ready (GObject *source, place, NULL); gtk_widget_show_all (row); - g_object_unref (info); } static void @@ -494,14 +460,12 @@ remove_button_clicked (GtkWidget *widget, gpointer user_data) { GtkWidget *row = user_data; - GPtrArray *new_values; - Place *place; + g_autoptr(GPtrArray) new_values = NULL; + Place *place; place = g_object_get_data (G_OBJECT (row), "place"); new_values = place_get_new_settings_values (place, TRUE); g_settings_set_strv (tracker_preferences, place->settings_key, (const gchar **) new_values->pdata); - - g_ptr_array_unref (new_values); } static gint @@ -511,7 +475,7 @@ place_compare_func (gconstpointer a, { GtkWidget *child_a, *child_b; Place *place_a, *place_b; - gchar *path; + g_autofree gchar *path = NULL; gboolean is_home; child_a = GTK_WIDGET (a); @@ -522,7 +486,6 @@ place_compare_func (gconstpointer a, path = g_file_get_path (place_a->location); is_home = (g_strcmp0 (path, g_get_home_dir ()) == 0); - g_free (path); if (is_home) return -1; @@ -573,7 +536,8 @@ create_row_for_place (Place *place) static void populate_list_boxes (CcSearchLocationsDialog *self) { - GList *places, *l; + g_autoptr(GList) places = NULL; + GList *l; Place *place; GtkWidget *row; @@ -598,8 +562,6 @@ populate_list_boxes (CcSearchLocationsDialog *self) g_assert_not_reached (); } } - - g_list_free (places); } static void @@ -607,8 +569,8 @@ add_file_chooser_response (GtkDialog *widget, GtkResponseType response, gpointer user_data) { - Place *place; - GPtrArray *new_values; + g_autoptr(Place) place = NULL; + g_autoptr(GPtrArray) new_values = NULL; if (response != GTK_RESPONSE_OK) { @@ -624,9 +586,7 @@ add_file_chooser_response (GtkDialog *widget, new_values = place_get_new_settings_values (place, FALSE); g_settings_set_strv (tracker_preferences, place->settings_key, (const gchar **) new_values->pdata); - g_ptr_array_unref (new_values); gtk_widget_destroy (GTK_WIDGET (widget)); - place_free (place); } static void @@ -651,7 +611,8 @@ add_button_clicked (GtkWidget *widget, static void other_places_refresh (CcSearchLocationsDialog *self) { - GList *places, *l; + g_autoptr(GList) places = NULL; + GList *l; Place *place; GtkWidget *row; @@ -667,8 +628,6 @@ other_places_refresh (CcSearchLocationsDialog *self) row = create_row_for_place (place); gtk_container_add (GTK_CONTAINER (self->others_list), row); } - - g_list_free (places); } CcSearchLocationsDialog * @@ -701,18 +660,14 @@ gboolean cc_search_locations_dialog_is_available (void) { GSettingsSchemaSource *source; - GSettingsSchema *schema; + g_autoptr(GSettingsSchema) schema = NULL; source = g_settings_schema_source_get_default (); if (!source) return FALSE; schema = g_settings_schema_source_lookup (source, TRACKER_SCHEMA, TRUE); - if (!schema) - return FALSE; - - g_settings_schema_unref (schema); - return TRUE; + return schema != NULL; } static void diff --git a/panels/search/cc-search-panel.c b/panels/search/cc-search-panel.c index 96dc7541f..8cc26ef1b 100644 --- a/panels/search/cc-search-panel.c +++ b/panels/search/cc-search-panel.c @@ -96,7 +96,7 @@ list_sort_func (gconstpointer a, static void search_panel_invalidate_button_state (CcSearchPanel *self) { - GList *children; + g_autoptr(GList) children = NULL; gboolean is_first, is_last; GtkListBoxRow *row; @@ -111,14 +111,12 @@ search_panel_invalidate_button_state (CcSearchPanel *self) gtk_widget_set_sensitive (self->up_button, !is_first); gtk_widget_set_sensitive (self->down_button, !is_last); - - g_list_free (children); } static void search_panel_invalidate_sort_order (CcSearchPanel *self) { - gchar **sort_order; + g_auto(GStrv) sort_order = NULL; gint idx; g_hash_table_remove_all (self->sort_order); @@ -128,7 +126,6 @@ search_panel_invalidate_sort_order (CcSearchPanel *self) g_hash_table_insert (self->sort_order, g_strdup (sort_order[idx]), GINT_TO_POINTER (idx + 1)); gtk_list_box_invalidate_sort (GTK_LIST_BOX (self->list_box)); - g_strfreev (sort_order); search_panel_invalidate_button_state (self); } @@ -151,8 +148,9 @@ propagate_compare_func (gconstpointer a, static void search_panel_propagate_sort_order (CcSearchPanel *self) { - GList *keys, *l; - GPtrArray *sort_order; + g_autoptr(GList) keys = NULL; + GList *l; + g_autoptr(GPtrArray) sort_order = NULL; sort_order = g_ptr_array_new (); keys = g_hash_table_get_keys (self->sort_order); @@ -164,9 +162,6 @@ search_panel_propagate_sort_order (CcSearchPanel *self) g_ptr_array_add (sort_order, NULL); g_settings_set_strv (self->search_settings, "sort-order", (const gchar **) sort_order->pdata); - - g_ptr_array_unref (sort_order); - g_list_free (keys); } static void @@ -194,7 +189,8 @@ search_panel_move_selected (CcSearchPanel *self, gint idx, other_idx; gpointer idx_ptr; gboolean found; - GList *children, *l, *other; + g_autoptr(GList) children = NULL; + GList *l, *other; row = gtk_list_box_get_selected_row (GTK_LIST_BOX (self->list_box)); app_info = g_object_get_data (G_OBJECT (row), "app-info"); @@ -288,8 +284,6 @@ search_panel_move_selected (CcSearchPanel *self, g_hash_table_replace (self->sort_order, g_strdup (app_id), GINT_TO_POINTER (idx)); search_panel_propagate_sort_order (self); - - g_list_free (children); } static void @@ -330,11 +324,10 @@ switch_settings_mapping_set_generic (const GValue *value, { CcSearchPanel *self = g_object_get_data (G_OBJECT (row), "self"); GAppInfo *app_info = g_object_get_data (G_OBJECT (row), "app-info"); - gchar **apps; - GPtrArray *new_apps; + g_auto(GStrv) apps = NULL; + g_autoptr(GPtrArray) new_apps = NULL; gint idx; gboolean remove, found; - GVariant *variant; remove = !!g_value_get_boolean (value) == !!default_enabled; found = FALSE; @@ -360,11 +353,7 @@ switch_settings_mapping_set_generic (const GValue *value, g_ptr_array_add (new_apps, NULL); - variant = g_variant_new_strv ((const gchar **) new_apps->pdata, -1); - g_ptr_array_unref (new_apps); - g_strfreev (apps); - - return variant; + return g_variant_new_strv ((const gchar **) new_apps->pdata, -1); } static GVariant * @@ -392,7 +381,7 @@ switch_settings_mapping_get_generic (GValue *value, gboolean default_enabled) { GAppInfo *app_info = g_object_get_data (G_OBJECT (row), "app-info"); - const gchar **apps; + g_autofree const gchar **apps = NULL; gint idx; gboolean found; @@ -408,7 +397,6 @@ switch_settings_mapping_get_generic (GValue *value, } } - g_free (apps); g_value_set_boolean (value, !!default_enabled != !!found); return TRUE; @@ -438,7 +426,7 @@ search_panel_add_one_app_info (CcSearchPanel *self, gboolean default_enabled) { GtkWidget *row, *box, *w; - GIcon *icon; + g_autoptr(GIcon) icon = NULL; gint width, height; /* gnome-control-center is special cased in the shell, @@ -470,7 +458,6 @@ search_panel_add_one_app_info (CcSearchPanel *self, gtk_icon_size_lookup (GTK_ICON_SIZE_DND, &width, &height); gtk_image_set_pixel_size (GTK_IMAGE (w), MAX (width, height)); gtk_container_add (GTK_CONTAINER (box), w); - g_object_unref (icon); w = gtk_label_new (g_app_info_get_name (app_info)); gtk_container_add (GTK_CONTAINER (box), w); @@ -505,10 +492,11 @@ static void search_panel_add_one_provider (CcSearchPanel *self, GFile *provider) { - gchar *path, *desktop_id; - GKeyFile *keyfile; - GAppInfo *app_info; - GError *error = NULL; + g_autofree gchar *path = NULL; + g_autofree gchar *desktop_id = NULL; + g_autoptr(GKeyFile) keyfile = NULL; + g_autoptr(GAppInfo) app_info = NULL; + g_autoptr(GError) error = NULL; gboolean default_disabled; path = g_file_get_path (provider); @@ -519,13 +507,13 @@ search_panel_add_one_provider (CcSearchPanel *self, { g_warning ("Error loading %s: %s - search provider will be ignored", path, error->message); - goto out; + return; } if (!g_key_file_has_group (keyfile, SHELL_PROVIDER_GROUP)) { g_debug ("Shell search provider group missing from '%s', ignoring", path); - goto out; + return; } desktop_id = g_key_file_get_string (keyfile, SHELL_PROVIDER_GROUP, @@ -535,7 +523,7 @@ search_panel_add_one_provider (CcSearchPanel *self, { g_warning ("Unable to read desktop ID from %s: %s - search provider will be ignored", path, error->message); - goto out; + return; } app_info = G_APP_INFO (g_desktop_app_info_new (desktop_id)); @@ -544,20 +532,12 @@ search_panel_add_one_provider (CcSearchPanel *self, { g_debug ("Could not find application with desktop ID '%s' referenced in '%s', ignoring", desktop_id, path); - g_free (desktop_id); - goto out; + return; } - g_free (desktop_id); default_disabled = g_key_file_get_boolean (keyfile, SHELL_PROVIDER_GROUP, "DefaultDisabled", NULL); search_panel_add_one_app_info (self, app_info, !default_disabled); - g_object_unref (app_info); - - out: - g_free (path); - g_clear_error (&error); - g_key_file_unref (keyfile); } static void @@ -565,18 +545,15 @@ search_providers_discover_ready (GObject *source, GAsyncResult *result, gpointer user_data) { - GList *providers, *l; - GFile *provider; + g_autoptr(GList) providers = NULL; + GList *l; CcSearchPanel *self = CC_SEARCH_PANEL (source); - GError *error = NULL; + g_autoptr(GError) error = NULL; providers = g_task_propagate_pointer (G_TASK (result), &error); if (g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED)) - { - g_error_free (error); - return; - } + return; g_clear_object (&self->load_cancellable); @@ -588,16 +565,14 @@ search_providers_discover_ready (GObject *source, for (l = providers; l != NULL; l = l->next) { - provider = l->data; + g_autoptr(GFile) provider = l->data; search_panel_add_one_provider (self, provider); - g_object_unref (provider); } /* propagate a write to GSettings, to make sure we always have * all the providers in the list. */ search_panel_propagate_sort_order (self); - g_list_free (providers); } static GList * @@ -605,11 +580,10 @@ search_providers_discover_one_directory (const gchar *system_dir, GCancellable *cancellable) { GList *providers = NULL; - gchar *providers_path; - GFile *providers_location, *provider; - GFileInfo *info; - GFileEnumerator *enumerator; - GError *error = NULL; + g_autofree gchar *providers_path = NULL; + g_autoptr(GFile) providers_location = NULL; + g_autoptr(GFileEnumerator) enumerator = NULL; + g_autoptr(GError) error = NULL; providers_path = g_build_filename (system_dir, "gnome-shell", "search-providers", NULL); providers_location = g_file_new_for_path (providers_path); @@ -625,32 +599,26 @@ search_providers_discover_one_directory (const gchar *system_dir, !g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED)) g_warning ("Error opening %s: %s - search provider configuration won't be possible", providers_path, error->message); - g_clear_error (&error); - goto out; + return NULL; } - while ((info = g_file_enumerator_next_file (enumerator, cancellable, &error)) != NULL) + while (TRUE) { + g_autoptr(GFileInfo) info = NULL; + GFile *provider; + + info = g_file_enumerator_next_file (enumerator, cancellable, &error); + if (info == NULL) + { + if (error != NULL && !g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED)) + g_warning ("Error reading from %s: %s - search providers might be missing from the panel", + providers_path, error->message); + return providers; + } provider = g_file_get_child (providers_location, g_file_info_get_name (info)); providers = g_list_prepend (providers, provider); - g_object_unref (info); } - - if (error != NULL) - { - if (!g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED)) - g_warning ("Error reading from %s: %s - search providers might be missing from the panel", - providers_path, error->message); - g_clear_error (&error); - } - - out: - g_clear_object (&enumerator); - g_clear_object (&providers_location); - g_free (providers_path); - - return providers; } static void @@ -682,13 +650,12 @@ search_providers_discover_thread (GTask *task, static void populate_search_providers (CcSearchPanel *self) { - GTask *task; + g_autoptr(GTask) task = NULL; self->load_cancellable = g_cancellable_new (); task = g_task_new (self, self->load_cancellable, search_providers_discover_ready, self); g_task_run_in_thread (task, search_providers_discover_thread); - g_object_unref (task); } static void