Blame SOURCES/0005-file-operations-Don-t-crash-if-source-file-not-prese.patch

1e3c33
From 32f347bd83495edf2bda746d17e613c868a7c379 Mon Sep 17 00:00:00 2001
1e3c33
From: Carlos Soriano <csoriano@redhat.com>
1e3c33
Date: Tue, 7 Aug 2018 11:51:54 +0200
1e3c33
Subject: [PATCH 05/11] file-operations: Don't crash if source file not present
1e3c33
 on creation
1e3c33
1e3c33
When creating a file it was checking if the file already exists, and if
1e3c33
so it tried to give a new name based on the original file that was being
1e3c33
duplicated from which is the case for the regular copy/paste and the
1e3c33
template creation.
1e3c33
1e3c33
However, creating a file is not only about duplicating from another one,
1e3c33
it also can come from creating a folder, that although in the UI it
1e3c33
prevents doing so, it can still be done through the dbus operation.
1e3c33
1e3c33
Fix that by checking whether there is an actual source file, and if not,
1e3c33
use the name provided as base name.
1e3c33
---
1e3c33
 src/nautilus-file-operations.c | 36 ++++++++++++++++------------------
1e3c33
 1 file changed, 17 insertions(+), 19 deletions(-)
1e3c33
1e3c33
diff --git a/src/nautilus-file-operations.c b/src/nautilus-file-operations.c
1e3c33
index 4d84b98be..cf5e7f46b 100644
1e3c33
--- a/src/nautilus-file-operations.c
1e3c33
+++ b/src/nautilus-file-operations.c
1e3c33
@@ -7324,20 +7324,18 @@ retry:
1e3c33
             {
1e3c33
                 g_autofree char *filename2 = NULL;
1e3c33
                 g_autofree char *suffix = NULL;
1e3c33
-                NautilusFile *file;
1e3c33
 
1e3c33
-                file = nautilus_file_get (job->src);
1e3c33
-                if (nautilus_file_is_directory (file))
1e3c33
-                {
1e3c33
-                    filename_base = filename;
1e3c33
-                }
1e3c33
-                else
1e3c33
+                filename_base = filename;
1e3c33
+                if (job->src != NULL)
1e3c33
                 {
1e3c33
-                    filename_base = eel_filename_strip_extension (filename);
1e3c33
+                    g_autoptr (NautilusFile) file = NULL;
1e3c33
+                    file = nautilus_file_get (job->src);
1e3c33
+                    if (!nautilus_file_is_directory (file))
1e3c33
+                    {
1e3c33
+                        filename_base = eel_filename_strip_extension (filename);
1e3c33
+                    }
1e3c33
                 }
1e3c33
 
1e3c33
-                nautilus_file_unref (file);
1e3c33
-
1e3c33
                 offset = strlen (filename_base);
1e3c33
                 suffix = g_strdup (filename + offset);
1e3c33
 
1e3c33
@@ -7377,21 +7375,21 @@ retry:
1e3c33
         {
1e3c33
             g_autofree char *suffix = NULL;
1e3c33
             g_autofree gchar *filename2 = NULL;
1e3c33
-            NautilusFile *file;
1e3c33
 
1e3c33
             g_clear_object (&dest);
1e3c33
 
1e3c33
-            file = nautilus_file_get (job->src);
1e3c33
-            if (nautilus_file_is_directory (file))
1e3c33
-            {
1e3c33
-                filename_base = filename;
1e3c33
-            }
1e3c33
-            else
1e3c33
+            filename_base = filename;
1e3c33
+            if (job->src != NULL)
1e3c33
             {
1e3c33
-                filename_base = eel_filename_strip_extension (filename);
1e3c33
+                g_autoptr (NautilusFile) file = NULL;
1e3c33
+
1e3c33
+                file = nautilus_file_get (job->src);
1e3c33
+                if (!nautilus_file_is_directory (file))
1e3c33
+                {
1e3c33
+                    filename_base = eel_filename_strip_extension (filename);
1e3c33
+                }
1e3c33
             }
1e3c33
 
1e3c33
-            nautilus_file_unref (file);
1e3c33
 
1e3c33
             offset = strlen (filename_base);
1e3c33
             suffix = g_strdup (filename + offset);
1e3c33
-- 
1e3c33
2.17.1
1e3c33