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);
>>>>
>>>>
>>>
>>
>