diff options
author | Carlos Soriano <csoriano@gnome.org> | 2016-09-16 10:03:15 +0200 |
---|---|---|
committer | Carlos Soriano <csoriano@gnome.org> | 2016-09-16 10:03:15 +0200 |
commit | d3036f19a6eca8004a08e970be4fe5760dd17607 (patch) | |
tree | 84854dc8577590c5526bacf5a961595d7c84b827 | |
parent | 4bf6a555a8b53f6e2f29cfc0dec43c72eba4c669 (diff) | |
download | nautilus-wip/csoriano/debug.tar.gz |
batch-rename-dialog: don't transfer ownership from caller to calledwip/csoriano/debug
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.
-rw-r--r-- | src/nautilus-batch-rename-dialog.c | 11 | ||||
-rw-r--r-- | 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)); |