[gimp] app: Fix potential memory leak in save dialog code



commit 8033f4c0d508e86dee233641981932e30e4a6ec1
Author: Martin Nordholts <martinn src gnome org>
Date:   Sun May 10 21:35:43 2009 +0200

    app: Fix potential memory leak in save dialog code
    
    Fix potential memory leak in save dialog code with a new helper function
    file_save_dialog_get_uri(). We must free zero-length strings.
---
 app/dialogs/file-save-dialog.c |   19 +++++++++++++++++--
 1 files changed, 17 insertions(+), 2 deletions(-)

diff --git a/app/dialogs/file-save-dialog.c b/app/dialogs/file-save-dialog.c
index acd4552..0dc0ee6 100644
--- a/app/dialogs/file-save-dialog.c
+++ b/app/dialogs/file-save-dialog.c
@@ -64,6 +64,7 @@ static gboolean  file_save_dialog_check_uri       (GtkWidget            *save_di
                                                    gchar               **ret_uri,
                                                    gchar               **ret_basename,
                                                    GimpPlugInProcedure **ret_save_proc);
+static gchar *   file_save_dialog_get_uri         (GimpFileDialog       *dialog);
 static void      file_save_dialog_unknown_ext_msg (GimpFileDialog       *dialog,
                                                    Gimp                 *gimp);
 static gboolean  file_save_dialog_use_extension   (GtkWidget            *save_dialog,
@@ -212,9 +213,9 @@ file_save_dialog_check_uri (GtkWidget            *save_dialog,
   GimpPlugInProcedure *uri_proc;
   GimpPlugInProcedure *basename_proc;
 
-  uri = gtk_file_chooser_get_uri (GTK_FILE_CHOOSER (save_dialog));
+  uri = file_save_dialog_get_uri (dialog);
 
-  if (! (uri && strlen (uri)))
+  if (! uri)
     return FALSE;
 
   basename      = file_utils_uri_display_basename (uri);
@@ -427,6 +428,20 @@ file_save_dialog_check_uri (GtkWidget            *save_dialog,
   return TRUE;
 }
 
+static gchar *
+file_save_dialog_get_uri (GimpFileDialog *dialog)
+{
+  gchar *uri = gtk_file_chooser_get_uri (GTK_FILE_CHOOSER (dialog));
+
+  if (uri && ! strlen (uri))
+    {
+      g_free (uri);
+      uri = NULL;
+    }
+
+  return uri;
+}
+
 static void
 file_save_dialog_unknown_ext_msg (GimpFileDialog *dialog,
                                   Gimp           *gimp)



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]