Abhijit,
Thanks for pointing out. Changed.
--- 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 (tmp1, 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:
> Hi,
> On 03/11/09 18:05, Rohini wrote:
>> 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_path_get_basename() API returns gchar*. So it should be freed.
>
>> + 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);
>>>>>
>>>>>
>>>>
>>>
>>
>