Strip leading and trailing whitespace from filechooser save filenames
authorArc Riley <arcriley@gmail.com>
Wed, 1 Jul 2015 23:23:15 +0000 (16:23 -0700)
committerMatthias Clasen <mclasen@redhat.com>
Sat, 4 Jul 2015 23:21:45 +0000 (19:21 -0400)
This makes a local copy of the file part of the entry to strip it transparently
Since this is assumed to be a mistake, the user is not notified.

https://bugzilla.gnome.org/show_bug.cgi?id=593372

gtk/gtkfilechooserwidget.c

index 3c4b7b7788df59b5f90c08715a49afc6d56f6b66..01f674bc183df4c4582d64055d104a1e73598d40 100644 (file)
@@ -5273,6 +5273,7 @@ check_save_entry (GtkFileChooserWidget  *impl,
   GtkFileChooserEntry *chooser_entry;
   GFile *current_folder;
   const char *file_part;
+  char *file_part_stripped;
   GFile *file;
   GError *error;
 
@@ -5310,21 +5311,26 @@ check_save_entry (GtkFileChooserWidget  *impl,
 
   file_part = _gtk_file_chooser_entry_get_file_part (chooser_entry);
 
-  if (!file_part || file_part[0] == '\0')
+  /* Copy and strip leading and trailing whitespace */
+  file_part_stripped = g_strstrip (g_strdup (file_part));
+
+  if (!file_part_stripped || file_part_stripped[0] == '\0')
     {
       *file_ret = current_folder;
       *is_well_formed_ret = TRUE;
       *is_file_part_empty_ret = TRUE;
       *is_folder = TRUE;
 
+      g_free (file_part_stripped);
       return;
     }
 
   *is_file_part_empty_ret = FALSE;
 
   error = NULL;
-  file = g_file_get_child_for_display_name (current_folder, file_part, &error);
+  file = g_file_get_child_for_display_name (current_folder, file_part_stripped, &error);
   g_object_unref (current_folder);
+  g_free (file_part_stripped);
 
   if (!file)
     {