summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarlos Soriano <csoriano@gnome.org>2016-09-16 10:03:15 +0200
committerCarlos Soriano <csoriano@gnome.org>2016-09-16 10:03:15 +0200
commitd3036f19a6eca8004a08e970be4fe5760dd17607 (patch)
tree84854dc8577590c5526bacf5a961595d7c84b827
parent4bf6a555a8b53f6e2f29cfc0dec43c72eba4c669 (diff)
downloadnautilus-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.c11
-rw-r--r--src/nautilus-files-view.c2
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));