Apologies for the spam. The previous fix was incorrect. Resending.

Fix:
--- gnome-utils-2.25.90.orig/gnome-screenshot/screenshot-dialog.c       
2009-03-06 11:04:59.021848933 +0530
+++ gnome-utils-2.25.90/gnome-screenshot/screenshot-dialog.c    
2009-03-11 18:01:57.997458129 +0530
@@ -338,10 +338,9 @@
 {
   gchar *folder;
   const gchar *file_name;
-  gchar *uri, *file, *tmp;
+  gchar *uri, *file, *tmp, *tmp1;
   GError *error;

-  folder = gtk_file_chooser_get_current_folder_uri (GTK_FILE_CHOOSER 
(dialog->save_widget));
   file_name = gtk_entry_get_text (GTK_ENTRY (dialog->filename_entry));

   error = NULL;
@@ -356,7 +355,34 @@
       tmp = g_strdup (_("Screenshot.png"));
     }

-  file = g_uri_escape_string (tmp, NULL, FALSE);
+  if (g_path_is_absolute(tmp))
+  {
+        error = NULL;
+        folder = g_filename_to_uri (g_path_get_dirname (tmp), NULL, 
&error);
+        if (error)
+        {
+                g_warning ("Unable to convert folder to valid UTF-8: %s\n"
+                           "Falling back to default file.",
+                           error->message);
+                g_error_free (error);
+                folder = gtk_file_chooser_get_current_folder_uri 
(GTK_FILE_CHOOSER (dialog->save_widget));
+                tmp1 = g_strdup (_("Screenshot.png"));
+                file = g_uri_escape_string (tmp1, NULL, FALSE);
+                g_free (tmp1);
+       }
+        else
+       {
+               tmp1 = g_path_get_basename (tmp);
+                file = g_uri_escape_string (g_path_get_basename (tmp), 
NULL, FALSE);
+                g_free (tmp1);
+       }
+  }
+  else
+  {
+       folder = gtk_file_chooser_get_current_folder_uri 
(GTK_FILE_CHOOSER (dialog->save_widget));
+       file = g_uri_escape_string (tmp, NULL, FALSE);
+  }
+
   uri = g_build_filename (folder, file, NULL);

   g_free (folder);


abhijit nath - Sun Microsystems - Bangalore India wrote:
> Rohini,
>
> On 03/11/09 14:46, Takao Fujiwara - Tokyo S/W Center wrote:
>> Rohini-san wrote (03/11/09 03:24 PM):
>>> CR: gnome screenshot refuses to allow different dir unless mouse is 
>>> used
>>>
>>> Description:
>>> Added a check to verify if filename is absolute and ignoring folder 
>>> if absolute path is specified.
>>>
>>> Fix:
>>> diff -urN 
>>> gnome-utils-2.25.90.orig/gnome-screenshot/screenshot-dialog.c 
>>> gnome-utils-2.25.90/gnome-screenshot/screenshot-dialog.c
>>> --- 
>>> gnome-utils-2.25.90.orig/gnome-screenshot/screenshot-dialog.c       
>>> 2009-03-06 11:04:59.021848933 +0530
>>> +++ gnome-utils-2.25.90/gnome-screenshot/screenshot-dialog.c    
>>> 2009-03-06 11:57:56.734246867 +0530
>>> @@ -356,6 +356,26 @@
>>>       tmp = g_strdup (_("Screenshot.png"));
>>>     }
>>>
>>> +  if (g_path_is_absolute(tmp))
>>> +  {
>>> +       error = NULL;
>>> +       folder = g_filename_to_uri (g_path_get_dirname (tmp), NULL, 
>>> &error);
>>> +       if (error)
>>> +       {
>>> +               g_warning ("Unable to convert `%s' to valid UTF-8: 
>>> %s\n"
>>> +                          "Falling back to default file.",
>>> +                          folder,
>>> +                          error->message);
>>> +               g_error_free (error);
>>> +               folder = gtk_file_chooser_get_current_folder_uri 
>>> (GTK_FILE_CHOOSER (dialog->save_widget));
>>> +               tmp = g_strdup (_("Screenshot.png"));
> I guess, in this line also it leaks memory as memory is allocated in 
> line 356 for tmp and it is not getting freed.
>>> +
>>> +       }
>>> +       else
>>> +               tmp = g_path_get_basename (tmp);
>>
>> I think tmp and folder needs to be freed before you change the values.
>>
>>
>>> +
>>> +  }
>>> +
>>>   file = g_uri_escape_string (tmp, NULL, FALSE);
>>>   uri = g_build_filename (folder, file, NULL);
>>>
>>>
>>
>


  • [jds-review] F... Rohini
    • [jds-revi... krishnan parthasarathi - Sun Microsystems - Bangalore India
    • [jds-revi... Takao Fujiwara - Tokyo S/W Center
      • [jds-... abhijit nath - Sun Microsystems - Bangalore India
        • [... Rohini
        • [... Rohini
          • ... abhijit nath - Sun Microsystems - Bangalore India
            • ... Rohini
              • ... Takao Fujiwara - Tokyo S/W Center

Reply via email to