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


  • [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