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


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