From 1f687b7572db75043aa2dbe5ce3c07d094fb592d Mon Sep 17 00:00:00 2001
From: Jerome Guelfucci <jeromeg@xfce.org>
Date: Sun, 5 Oct 2008 08:19:33 +0000
Subject: [PATCH] Fix four memleaks detected by Gauvain Pocentek.

(Old svn revision: 5512)
---
 ChangeLog                 | 8 ++++++++
 src/main.c                | 4 +++-
 src/screenshooter-utils.c | 9 +++++++--
 3 files changed, 18 insertions(+), 3 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index a44ca8fc..68835941 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2008-10-05 jeromeg
+
+  * Plug some leaks detected by Gauvain Pocentek:
+    - src/main.c: in (main), free sd->screenshot_dir before setting the new 
+      value from command line.
+    - src/screenshooter-utils.c: in (save_screenshot), free filename before
+      getting the user set filename.
+
 2008-10-04 jeromeg
 
   * Partially refactor the code:
diff --git a/src/main.c b/src/main.c
index 2b07f31f..f1738ca4 100644
--- a/src/main.c
+++ b/src/main.c
@@ -191,10 +191,12 @@ int main(int argc, char **argv)
           /* Check if the path is absolute, if not make it absolute */
           if (g_path_is_absolute (screenshot_dir))
             { 
-              sd->screenshot_dir = screenshot_dir;
+              g_free (sd->screenshot_dir);
+              sd->screenshot_dir = screenshot_dir;              
             }
           else
             {
+              g_free (sd->screenshot_dir);
               sd->screenshot_dir = 
               g_build_filename (g_get_current_dir (), screenshot_dir, NULL);
               g_free (screenshot_dir);
diff --git a/src/screenshooter-utils.c b/src/screenshooter-utils.c
index 91dc6aa6..ce86af58 100644
--- a/src/screenshooter-utils.c
+++ b/src/screenshooter-utils.c
@@ -240,6 +240,7 @@ void save_screenshot (GdkPixbuf *screenshot, gboolean show_save_dialog,
 	  
 	    if (dialog_response == GTK_RESPONSE_ACCEPT)
 	      {
+	        g_free (filename);
 	        filename = 
 	          gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (chooser) );
           gdk_pixbuf_save (screenshot, filename, "png", NULL, NULL);
@@ -249,9 +250,13 @@ void save_screenshot (GdkPixbuf *screenshot, gboolean show_save_dialog,
 	  }  
 	else
 	  {    
+	    gchar * savename = NULL;
 	    /* Else, we just save the file in the default folder */
-      filename = g_build_filename (default_dir, filename, NULL);
-	    gdk_pixbuf_save (screenshot, filename, "png", NULL, NULL);
+      
+      savename = g_build_filename (default_dir, filename, NULL);
+	    gdk_pixbuf_save (screenshot, savename, "png", NULL, NULL);
+	    
+	    g_free (savename);
 	  }
 
   g_free (filename);
-- 
GitLab