diff options
author | Alexandru Fazakas <alex.fazakas97@gmail.com> | 2018-07-26 14:22:02 +0000 |
---|---|---|
committer | Ernestas Kulik <ernestas.kulik@gmail.com> | 2018-07-26 14:22:02 +0000 |
commit | bb5e23e8a5de8931eba6e46657f42e516bc632e4 (patch) | |
tree | d51282cbb1e9a6101d886aef0b8ed75fa1f8bfa0 | |
parent | 703618c12c2fb62e81c0dc4c6092ddac9a2d4abf (diff) | |
download | nautilus-bb5e23e8a5de8931eba6e46657f42e516bc632e4.tar.gz |
file-operations: Fix undo-duplicate critical
-rw-r--r-- | src/nautilus-file-operations.c | 26 |
1 files changed, 13 insertions, 13 deletions
diff --git a/src/nautilus-file-operations.c b/src/nautilus-file-operations.c index 4ae4ca383..801f2a8f0 100644 --- a/src/nautilus-file-operations.c +++ b/src/nautilus-file-operations.c @@ -5775,14 +5775,18 @@ nautilus_file_operations_copy (GTask *task, if (!nautilus_file_undo_manager_is_operating ()) { - GFile *src_dir; + g_autoptr (GFile) src_dir = NULL; src_dir = g_file_get_parent (job->files->data); - job->common.undo_info = nautilus_file_undo_info_ext_new (NAUTILUS_FILE_UNDO_OP_COPY, - g_list_length (job->files), - src_dir, job->destination); - - g_object_unref (src_dir); + /* In the case of duplicate, the undo_info is already set, so we don't want to + * overwrite it wrongfully. + */ + if (job->common.undo_info != NULL) + { + job->common.undo_info = nautilus_file_undo_info_ext_new (NAUTILUS_FILE_UNDO_OP_COPY, + g_list_length (job->files), + src_dir, job->destination); + } } nautilus_progress_info_start (job->common.progress); @@ -6454,7 +6458,7 @@ nautilus_file_operations_move (GTask *task, if (!nautilus_file_undo_manager_is_operating ()) { - GFile *src_dir; + g_autoptr (GFile) src_dir = NULL; src_dir = g_file_get_parent ((job->files)->data); @@ -6470,8 +6474,6 @@ nautilus_file_operations_move (GTask *task, g_list_length (job->files), src_dir, job->destination); } - - g_object_unref (src_dir); } common = &job->common; @@ -6842,13 +6844,12 @@ nautilus_file_operations_link (GList *files, if (!nautilus_file_undo_manager_is_operating ()) { - GFile *src_dir; + g_autoptr (GFile) src_dir = NULL; src_dir = g_file_get_parent (files->data); job->common.undo_info = nautilus_file_undo_info_ext_new (NAUTILUS_FILE_UNDO_OP_CREATE_LINK, g_list_length (files), src_dir, target_dir); - g_object_unref (src_dir); } task = g_task_new (NULL, job->common.cancellable, link_task_done, job); @@ -6882,14 +6883,13 @@ nautilus_file_operations_duplicate (GList *files, if (!nautilus_file_undo_manager_is_operating ()) { - GFile *src_dir; + g_autoptr (GFile) src_dir = NULL; src_dir = g_file_get_parent (files->data); job->common.undo_info = nautilus_file_undo_info_ext_new (NAUTILUS_FILE_UNDO_OP_DUPLICATE, g_list_length (files), src_dir, src_dir); - g_object_unref (src_dir); } task = g_task_new (NULL, job->common.cancellable, copy_task_done, job); |