From d3036f19a6eca8004a08e970be4fe5760dd17607 Mon Sep 17 00:00:00 2001 From: Carlos Soriano Date: Fri, 16 Sep 2016 10:03:15 +0200 Subject: batch-rename-dialog: don't transfer ownership from caller to called This is common good practice, otherwise it's not clear who has ownership, making it error prone for dangling pointers (this case) or use after free. --- src/nautilus-batch-rename-dialog.c | 11 +++++++---- src/nautilus-files-view.c | 2 +- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/src/nautilus-batch-rename-dialog.c b/src/nautilus-batch-rename-dialog.c index 59a15a125..de41d4f6f 100644 --- a/src/nautilus-batch-rename-dialog.c +++ b/src/nautilus-batch-rename-dialog.c @@ -1286,7 +1286,7 @@ file_names_list_has_duplicates_async_thread (GTask *task, { if (g_task_return_error_if_cancelled (task)) { - nautilus_directory_list_unref (directories); + nautilus_directory_list_free (directories); return; } @@ -1315,7 +1315,7 @@ file_names_list_has_duplicates_async_thread (GTask *task, } g_task_return_boolean (task, TRUE); - nautilus_directory_list_unref (directories); + nautilus_directory_list_free (directories); g_print ("unrefing directory \n"); } @@ -2044,6 +2044,9 @@ nautilus_batch_rename_dialog_finalize (GObject *object) g_list_free_full (dialog->new_names, string_free); g_list_free_full (dialog->duplicates, conflict_data_free); + nautilus_file_list_free (dialog->selection); + nautilus_directory_unref (dialog->directory); + G_OBJECT_CLASS (nautilus_batch_rename_dialog_parent_class)->finalize (object); } @@ -2112,8 +2115,8 @@ nautilus_batch_rename_dialog_new (GList *selection, dialog = g_object_new (NAUTILUS_TYPE_BATCH_RENAME_DIALOG, "use-header-bar", TRUE, NULL); - dialog->selection = selection; - dialog->directory = directory; + dialog->selection = nautilus_file_list_copy (selection); + dialog->directory = nautilus_directory_ref (directory); dialog->window = window; gtk_window_set_transient_for (GTK_WINDOW (dialog), diff --git a/src/nautilus-files-view.c b/src/nautilus-files-view.c index e613a01fa..ca6b9eac5 100644 --- a/src/nautilus-files-view.c +++ b/src/nautilus-files-view.c @@ -5971,7 +5971,7 @@ real_action_rename (NautilusFilesView *view) cursor); g_object_unref (cursor); - dialog = nautilus_batch_rename_dialog_new (nautilus_files_view_get_selection (NAUTILUS_VIEW (view)), + dialog = nautilus_batch_rename_dialog_new (selection, nautilus_files_view_get_model (view), nautilus_files_view_get_window (view)); -- cgit v1.2.1