Takao, Abhijit
Thanks for pointing out the memory leaks. I've created a new fix. Please
review.
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 15:54:28.565526046 +0530
@@ -341,7 +341,6 @@
gchar *uri, *file, *tmp;
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;
@@ -355,8 +354,30 @@
g_error_free (error);
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));
+ file = g_uri_escape_string (g_strdup
(_("Screenshot.png")), NULL, FALSE);
+ }
+ else
+ file = g_uri_escape_string (g_path_get_basename (tmp),
NULL, FALSE);
- file = g_uri_escape_string (tmp, NULL, FALSE);
+ }
+ 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);
>>>
>>>
>>
>